1.修改数据库配置文件/etc/my.cnf(mysql配置文件位置)设置server-id及log-bin(所有服务器的server-id不能重复)
2.修改完重启mysql(service mysql restart)
3.在主服务器创建用于同步的账户(登录主数据库运行GRANT REPLICATION SLAVE ON *.* TO '用户名'@'从服务器内网ip地址' IDENTIFIED BY '密码';),如果有多个可以创建多个(设置固定ip服务器安全性高),怕麻烦可以直接用root账号开全网连接权限。
4.锁主数据库准备复制数据(登录主数据库运行flush tables with read lock;)
确认锁表成功(登录主数据库多次运行show master status \G查看File与Position是否变化,不变化应该就ok了)
5.
6.备份主数据库所有数据(mysql外执行mysqldump -uroot -p -A >备份文件地址)(例:mysqldump
-uroot -p -A > /all.sql)
7.将数据复制至从服务器准备初始化同步所有数据(mysql外执行scp备份文件地址从服务器用户名@从服务器内网ip:备份文件地址)(例:scp all.sql [email protected]:/all.sql)
8.停止从数据库主从同步(登陆从服务器mysql执行stop slave;)
9.设置从数据库主从同步配置(登陆从服务器mysql执行change master to master_host='主服务器内网ip、',master_user='主服务器mysql用于同步用户名',master_password='主服务器mysql用于同步用户密码',master_log_file='主服务器的File值(运行show
master status \G)',master_log_pos=Position主服务器的值(运行show master
status \G);)(例:change master to
master_host='172.31.9.229',master_user='root',master_password='123456789',master_log_file='mysql-bin.000023',master_log_pos=622127100;)
10.开启从数据库的同步(登陆从服务器mysql执行start slave;)
11.查看从数据库的同步状态(登陆从服务器mysql执行show slave status \G)确认这些数据无误则基本完成主从同步了。
12.解锁主数据库准备所有数据同步(登陆主服务器mysql执行UNLOCK TABLES;)
13.检测主从是否ok(可以在主数据库插入或者删除数据进行判别,也可在主数据库运行show master status \G及在从数据库运行sho slave status \G,如果业务本身在跑,数据本身在变则主mysql的Position及从mysql的Read_Master_Log_Pos值都在变化)
14.踩到其他坑请自行百度,最好保证主从服务器的mysql版本一致性。