mysql-replication

mysql数据库如何实现在不停机的情况下同步。通常我们在搭建数据库同步的时候由于业务还没有上线,都是采用冷备份的方式(拷贝全量数据文件)的方式进行同步的,但是当业务已经上线,而且数据量还比较大的情况下我们如何实现同步呢,这个就需要借助于mysqldump这个神奇的工具了。注意:此方法由于默认系统未开启二进制日志,所以需要修改参数文件之后重启mysql服务器.不是完全停机!!!
我这列出几个关键的步骤:
1、开启二进制日志
修改/etc/my.cnf

server-id=1
binlog-format=mixed
log-bin=mysql-bin
datadir=xxxx
innodb_flush_log_at_trx_commit=1
sync_binlog=1
expire_logs_days=1
#由于二进制日志的堆积会造成大量存储空间的占用,可根据需求设置过期时间

重启mysql数据库服务器
2、给复制用户权限

create user replication@xxx;
grant replication slave on *.* to replication@xxx identified by 'xxx';

3、备份数据库

mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A > ~/dump.sql

4、获取master的位置

head dump.sql -n80 | grep "MASTER_LOG_POS"

5、拷贝文件,如果文件太大可以考虑压缩后传输

scp dump.sql xxx@IP:/root

6、还原

mysql < dump.sql

7、导入数据库

change master to master_host='xx',master_user='xx',master_password='xx',master_log_file='xxx',master_log_pos='xxx';
start slave

参考:https://plusbryan.com/mysql-replication-without-downtime