前提:先手动使主从数据库的数据一致,有两种方式,这里使用拷贝数据库文件的方式,此方法数据库版本必须一致!!!
一:主数据库数据不大,可以使用数据备份还原的方式,先手动使主从数据达到一致。
二:主数据库达到一百多个g,建议使用拷贝数据库文件的方式。
主服务器配置
1:修改主库配置文件
# vim /etc/my.cnf
#[mysqld]中增加代码
server-id=1
log-bin=mysql-bin
#不同步数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#只仅同步数据库
binlog-do-db=zixuephp-db
#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)
binlog_format=MIXED
#混合模式复制,可靠性更高
2:重启数据库
# systemctl restart mysqld
3:重新登陆数据库并锁主库
> flush tables with read lock;
4:拷贝主数据库文件到从数据库,需要先确定数据库文件的位置,这里默认的文件为/var/lib/mysql
# scp -r /var/lib/mysql 从库ip:/var/lib/
5:从主服务器中创建从库用户,专门使用这个用户做主从同步,这里设置了用户名为repl,密码为repl,随便设,不要忘了就行。
# grant replication slave on *.* to 'repl'@'%' identified by 'repl';
# flush privileges;
6:查看主库状态,这里的File和Position会在从库中用到
# show master status \G
7:解锁主库表
> unlock tables;
从库配置
1:关闭数据库
# systemctl stop mysqld
2:修改拷贝过来数据文件的所有者为mysql
# chown mysql.mysql /var/lib/mysql -R
3:配置从库my.cnf配置文件
# vim /etc/my.cnf
#[mysqld]中增加代码
server-id=2
log-bin=mysql-bin
binlog_format=MIXED
4:重启数据库
# systemctl restart mysqld
5:登陆数据库,从库设置slave复制主库数据
#mysql -uroot -padmin
master_log_file文件尾主库中 show master status 中的File,
master_log_post为主库中Postion的值
master_log_file为主库中File的值
> change master to master_host='主mysql服务器ip',master_user='repl',master_password='repl',master_log_file='mysql-bin.000002',master_log_pos=主库中Postion的值;
6:启动从库复制
> start slave;
7:查看从库是否同步上主库,红色框框两个yes说明成功了。
如果在“Slave_SQL_Running_State”中报如下错误
Fatal error: The slave I/O thread stopsbecause master and slave have equal MySQL server UUIDs; these UUIDs must bedifferent for replication to work.
删掉从服务器中的auto.cnf文件或者换名字,重启从数据库即可
#mv /mysql/data/auto.cnf /mysql/data/auto.cnf.bak
# systemctl restart mysqld
删除主从同步
#从库
stop slave;
reset slave all;
show slave status \G
#清除从库配置文件的配置
#主库
reset master;
#清除主库配置文件的配置
#清除mysql.user从库账号
show master status \G
版权声明:本文为yanzhenjingfan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。