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