配置 Apache MySQL 复制涉及多个步骤,包括设置主服务器和从服务器的配置文件。以下是一个基本的配置示例:
主服务器配置 (my.cnf
或 my.ini
):
在 [mysqld]
部分添加以下内容:
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=your_database_name
binlog_format=ROW
请将 your_database_name
替换为你希望复制的数据库名称。server-id
是主服务器的唯一标识符,log_bin
指定了二进制日志的文件路径。binlog_do_db
限制了哪些数据库的更改会被记录到二进制日志中。binlog_format
定义了二进制日志的事件格式,这里使用的是 ROW
格式,它记录了行的更改。
重启 MySQL 服务以使更改生效。
从服务器配置 (my.cnf
或 my.ini
):
在 [mysqld]
部分添加以下内容:
server-id=2
relay_log=/var/log/mysql/mysql-relay-bin.log
log_slave_updates=1
read_only=1
这里,server-id
是从服务器的唯一标识符,relay_log
指定了中继日志的文件路径。log_slave_updates
启用从服务器将更新记录到自己的二进制日志中。read_only
设置从服务器为只读模式,以防止写操作。
创建一个用于复制的专用 MySQL 用户,并授权访问主服务器:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
请将 your_password
替换为你为该用户设置的密码。
在从服务器上设置主服务器的相关信息:
CHANGE MASTER TO
MASTER_HOST='master_server_ip',
MASTER_USER='repl',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;
请将 master_server_ip
替换为主服务器的 IP 地址,your_password
替换为之前创建的用户的密码,recorded_log_file_name
和 recorded_log_position
分别替换为主服务器二进制日志中的文件名和位置。
启动从服务器上的 MySQL 服务。
检查复制状态:
SHOW SLAVE STATUS\G;
如果一切正常,你应该能看到 Slave_IO_Running
和 Slave_SQL_Running
的状态为 “Yes”。此外,Last_IO_Error
和 Last_SQL_Error
应该是空的,表示没有发生错误。
请注意,这只是一个基本的配置示例。在生产环境中,你可能需要根据具体需求进行更多的配置和优化。