配置 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
应该是空的,表示没有发生错误。
请注意,这只是一个基本的配置示例。在生产环境中,你可能需要根据具体需求进行更多的配置和优化。