1、准备两台数据库环境,或者单台多实例环境,能否正常启动和登录。
2、配置my.cnf文件,主库配置log-bin和server-id参数,从库配置server-id,不能和主库及其他从库一样,一般不开启从库log-bin功能。注意:配置参数后要重启生效。
3、登录主库增加用于从库连接主库同步的账户例如:rep,并授权replication slave同步的权限。
4、登录主库,整库锁表flush table with read lock(窗口关闭后即失效,超时参数到了也失效);然后show master status查看binlog的位置状态。
5、新开窗口, linux命令行备份或导出原有的数据库数据,并拷贝到从库所在的服务器目录。
如果数据量很大,并允许停机,可以停机打包,而不用mysqldump。
6、解锁主库,unlock tables;
7、把主库导出的原有数据恢复到从库。
8、根据主库的show master status查看binlog的位置状态,在从库执行change master to.. 语句。
9、从库开启同步开关,start slave。
10、从库show slave status\G ,检查同步状态,并在主库进行更新测试。
一,主库配置
1.主库配置/etc/my.cnf
增加server-id 和 bin-log
# vim /etc/my.cnf
server-id = 128
log-bin = mysql-bin
2.主库配置授权账号
grant replication slave on *.* to rep@'192.168.6.%' identified by 'ruowei123';
flush privileges;
3.重启主库
# /etc/init.d/mysqld restart
4.主库锁
flush table with read lock;
5.查看master位置信息
show master status;
6.导出主库数据
mysqldump -uxxx -p > mysql_bak
7.主库解锁
unlock table;
二、从库配置
1.从库配置/etc/my.cnf
增加server-id 和 bin-log
# vim /etc/my.cnf
server-id = 129
#如果需要在从库上做bin-log备份可以添加如下参数
log-bin = mysql-bin
log-slave-updates = 1
2.重启数据库
# /etc/init.d/mysqld restart
3.恢复主库数据到从库
# mysql -uroot < mysql_bak.sql
4.登录从库配置同步参数
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.6.128',
-> MASTER_USER='rep',
-> MASTER_PASSWORD='ruowei123',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=120;
Query OK, 0 rows affected, 2 warnings (0.09 sec)
5.启动从库同步开关
start slave;
6.查看同步状态
show slave status\G;
或者
# mysql -uroot -e "show slave status\G "|egrep "Seconds_Behind_Master|_Running"
判断复制是否搭建成功就看如下IO和SQL两个线程是否显示为Yes状态,
Slave_IO_Running: Yes #负责从库去主库读取BINLOG日志,并写入从库的中继日志中
Slave_SQL_Running: Yes #负责读取并执行中继日志中的BINGLOG,转换SQL语句后应用到数据库汇总