在Debian系统上实现MySQL数据同步的技巧主要包括使用MySQL的主从复制功能。以下是一个基本的步骤指南:
/etc/mysql/my.cnf
或 /etc/my.cnf
,添加或确认以下配置:[mysqld]
server-id=1 # 主服务器的唯一标识
log-bin=mysql-bin # 启用二进制日志
binlog_format=ROW # 使用ROW格式的二进制日志,记录数据变更
sudo systemctl restart mysql
CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记下 File
和 Position
的值,稍后在配置从服务器时会用到。
/etc/mysql/my.cnf
或 /etc/my.cnf
,添加或确认以下配置:[mysqld]
server-id=2 # 从服务器的唯一标识
relay-log=mysql-relay-bin # 启用中继日志
log_slave_updates=1 # 从服务器上的更新也记录到自己的二进制日志中
read_only=1 # 从服务器默认只读,防止数据被修改
sudo systemctl restart mysql
CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='replica',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', # 使用之前获取的文件名
MASTER_LOG_POS=123; # 使用之前获取的位置
START SLAVE;
SHOW SLAVE STATUS\G;
确保 Slave_IO_Running
和 Slave_SQL_Running
都是 Yes
,表示同步正常进行。
mysql -uroot -p test < /path/to/master.sql
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='replica',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000002', # 使用新的文件名
MASTER_LOG_POS=新的位置;
START SLAVE;