本文共 1899 字,大约阅读时间需要 6 分钟。
修改Master的配置文件文件(通常位于 /etc/my.cnf
或 ~/.my.cnf
)中相关参数:
[mysqld]server_id=1binlog_ignore_db=testreplicate_ignore_db=testlog-bin=mysql-binbinlog_cache_size=1Mbinlog_format=mixedexpire_logs_days=3
重启MySQL服务:
sudo systemctl restart mysql
编辑Slave的配置文件:
[mysqld]server_id=2binlog_do_db=mydbbinlog_ignore_db=testreplicate_ignore_db=testlog-bin=mysql-binbinlog_cache_size=1Mbinlog_format=mixedexpire_logs_days=3
重启MySQL服务:
sudo systemctl restart mysql
通过MySQL命令创建复制用户:
mysql> GRANT replication slave, replication client ON *.* TO 'repl'@'192.168.247.130' IDENTIFIED BY 'pwd';
mysql> FLUSH TABLES WITH READ LOCK;mysql> SHOW MASTER STATUS;
记录Master的binlog文件和位置信息,执行备份:
mysqldump -uroot -p --lock-all-tables -R --master-data=2 --databases mydb > /tmp/mydb.sql
执行备份时保留binlog文件:
mysqldump -uroot -p --hex-blob --lock-all-tables -R --triggers --databases mydb --master-data=2 --default-character-set='utf8' > /tmp/mydb.sql
将备份文件传输到Slave服务器:
scp /tmp/mydb.sql 192.168.247.130:
在Slave上导入数据:
mysql -uroot -p mydb < /tmp/mydb.sql
根据备份方式选择对应的命令:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.247.128', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=1273;
grep -i "CHANGE MASTER TO" /tmp/mydb.sql
提取binlog文件名和位置信息。
在Slave上执行:
mysql> START SLAVE;
查看Slave的复制状态:
mysql> SHOW SLAVE STATUS\G
确保Slave_IO_State
为stopped
,Slave_SQL_Running
为yes
,并检查是否有错误提示。
如果Slave与Master的UUID相同,可能是由于虚拟机克隆导致的auto.cnf
文件内容相同。解决方法是:
auto.cnf
文件:sudo rm /var/lib/mysql/auto.cnf
sudo systemctl restart mysql
重启后,Slave会生成新的UUID,完成后验证复制是否正常。
通过以上步骤,可以实现基于日志的主从复制,确保数据同步与高可用性。
转载地址:http://sjbfk.baihongyu.com/