mysql中什么是主从复制?怎么配置?

文 / @WordPress主题

MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。在业务复杂的系统中,数据库往往是应用的瓶颈,单机往往是不能扛住大型系统的并发压力的,这时候需要从数据库方面下手解决其瓶颈。使用主从之后,从库的读操作是不受影响的。

那么什么是MySQL的主从复制呢?MySQL默认采用异步复制方式,即数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库或者特定的表。MySQL主从复制主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。同时,主从复制还可以实现架构的扩展,可支持多台服务器,同样也可以当作数据备份的方式,保证数据的安全性。

MySQL主从复制在架构上采用单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高,slave的sqlthread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随机的,不是顺序,所以成本要高很多,另一方面,由于sqlthread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQLthread所能处理的速度,或者当slave中有大型query语句产生了锁等待,那么延时就产生了。

解决主从同步延迟的方案主要有以下几种:

1.业务的持久化层的实现采用分库架构,mysql服务可平行扩展,分散压力。
2.单个库读写分离,一主多从,主写从读,分散压力。这样从库压力比主库高,保护主库。
3.服务的基础架构在业务和mysql之间加入memcache或者redis的cache层。降低mysql的读压力。
4.不同业务的mysql物理上放在不同机器,分散压力。
5.使用比主库更好的硬件设备作为slave,mysql压力小,延迟自然会变小。
6.使用更加强劲的硬件设备。mysql5.7之后使用MTS并行复制技术,永久解决复制延时问题。

如何配置MySQL主从复制呢?

1.准备安装MySQL数据库,可以在不同的机器上安装也可以在同一机器上安装,需保持不同的端口。
2.在两台数据库中分别创建相同的数据库。
3.在主服务器进行以下配置,修改配置文件vi /etc/my.cnf,将以下内容添加到mysqld模块中:

log-bin=master-bin #二进制文件名称
binlog-format=ROW #二进制日志格式
server-id=1 #要求各个服务器的id必须不一样
binlog-do-db=test #同步的数据库名称

4.授权操作,设置登录主服务器的账号:

set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'root'@'%' identified by '123456';
flush privileges;

5.在从服务器进行以下配置,修改配置文件vi /etc/my.cnf,将以下内容添加到mysqld模块中:

log-bin=master-bin #二进制文件的名称
binlog-format=ROW #二进制文件的格式
server-id=2 #服务器的id

6.重启主服务器的mysqld服务。

7.在从服务器连接主服务器,设置主服务器的ip地址、用户名、密码、端口、二进制日志的位置:

change master to master_host='127.0.0.1', master_user='root', master_password='123456', master_port=3306, master_log_file='master-bin.000001', master_log_pos=154;

8.启动从服务器的slave,并查看从服务器的状态:

start slave;
show slave status \G;

至此,MySQL主从复制的配置已经完成。可以在主服务器添加或删除数据,并在从服务器查看相关状态,以验证主从复制的有效性。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。