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