Centos7中mysql数据库拷贝data目录文件实现主从同步

前提:先手动使主从数据库的数据一致,有两种方式,这里使用拷贝数据库文件的方式,此方法数据库版本必须一致!!!

一:主数据库数据不大,可以使用数据备份还原的方式,先手动使主从数据达到一致。

二:主数据库达到一百多个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版权协议,转载请附上原文出处链接和本声明。