sql

MySQL主从复制(一)——实战

2019-06-03  本文已影响0人  Jerry_Liang

在开始实际讲解MySQL主从复制如何实现之前,我们可以先思考一个问题!那就是,我们为什么要用数据库主从复制呢?它能为我们解决什么业务问题?在思考过后我们开始进入正题吧!

1.MySQL主从复制是什么?

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

2.单台MySQL服务器的局限性

3.主从复制解决的问题

3.1数据备份

提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据;

3.2高可用

4.主从复制的原理

主从复制原理图

Master服务器将数据的改变记录二进制日志,当Master上的数据发生改变时,则将其改变写入二进制日志中,Salve服务器会在一定时间间隔内对Master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求Master二进制事件,同时主节点为每个I/O线程启动一个线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

5.配置实现主从复制

环境如下:

名称 版本 MySQL版本 IP
主数据库 Centos7.3 5.7 192.168.xx.xx
从数据库 Centos7.3 5.7 192.168.yy.yy
5.1主数据库配置
[mysqld]
log-bin=mysql-bin # 开启二进制日志
server-id=1 #设置server-id,需要唯一

可选参数如下(注意:使用时二选一):

#不同步哪些数据库,除此之外别的都同步
binlog-ignore-db = information_schema 
binlog-ignore-db = mysql

#只同步哪些数据库,除此之外别的都不同步
binlog-do-db = test
systemctl restart mysqld #重启mysql
mysql -u root -p #进入数据库

# 创建用户,其中用户名后的为从数据ip地址
mysql> CREATE USER 'MySlave'@'192.168.yy.yy' IDENTIFIED BY 'password';
#分配权限  
mysql> GRANT REPLICATION SLAVE ON *.* TO 'MySlave'@'192.168.yy.yy';
#刷新权限
mysql>FLUSH PRIVILEGES;

5.2从数据库配置
[mysqld]
log-bin=mysql-bin # 开启二进制日志
server-id=2 #设置server-id,需要唯一
mysql> CHANGE MASTER TO
    MASTER_HOST='192.168.xx.xx',
    MASTER_USER='MySlave',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000007',
    MASTER_LOG_POS=1539;
mysql > start slave;
mysql > show slave status\G;
slave状态图

6.测试

主数据库新建jerry表:


image.png

然后在从数据库中刷新,可以看到新建的表:


image.png

注意:
若我们在进行数据库主从复制前,为以下情况的一种:

若为第一种情况,直接配置即可。

若为第二种情况,会有一个问题(踩过这坑=-=),那就是如果我们之前有数据,而我们同步时输入的是最新的偏移位置,是会忽略以前的数据操作的,为此如果这个时候我们在Master以前的表中插入新数据,你会发现并不会在Slave中看到该数据,而会产生错误,这时候如果没有在Master的mysql配置文件my.cnf中配置忽略错误slave-skip-errors=1时,Slave_SQL_Running线程会关闭,我们再查看状态会发现其为Slave_SQL_Running: NO
这种情况的解决办法是:手动导出sql文件并在Slave中运行,使得两者为一致状态;然后我们再重新手动同步。

上一篇下一篇

猜你喜欢

热点阅读