高性能Mysql--------------复制

复制是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。

mysql支持两种复制方式:基于行的复制和基于语句的复制。这两种方式都是通过在主库上记录二进制日志、在备库重放日志的方式来实现异步的数据复制。同一时间点,主库和备库数据可能不一致,并且无法保证主备之间的延迟。

复制通常不会增加主库的开销,主要是启用二进制日志带来的开销。一主库多备库的架构中,写操作会被执行多次,这时候整个系统的性能取决于写入最慢的那部分。

复制三个步骤:
1)在主库上把数据更改记录到二进制中
2)备库将主库上的日志复制到自己的中继日志中
3)备库读取中继日志中的事件,将其重放到备库

具体操作:主库在每次准备提交事务完成数据更新前,将数据更新事件记录到二进制日志中。按事务提交的数据记录。
备库会启动一个工作线程,称为i/o线程,和主库建立一个普通的客户端连接,然后在主库上启动一个特殊的二进制转储线程,这个线程会读取主库上的二进制日志中的事件并在备库中执行。

配置复制:
1)在每台服务器上创建复制账号
2)配置主库和备库
3)通知备库连接到主库并从主库复制数据

假设服务器server1(IP地址192.1680.1)和服务器server2(IP地址192.168.0.2)
创建复制账号:mysql会给予一些特殊的权限给复制线程。备库以该用户名连接到主库并读取二进制日志。
grant replication slave, replication client on . to repl@‘192.168.0.%’ identified by ‘password’
主库和备库都创建该账号,这个账号应该限制在本地网络。

配置主库和备库
假设主库是服务器server1,需要打开二进制日志并指定一个独一无二的服务器ID,在主库的my.cnf文件中增加或修改如下内容:
log_bin=mysql-bin
server_id= 10

如果之前没有设置过log-bin选项,需要重新启动mysql。为了确认二进制日志文件是否已经在主库创建,使用show master status命令,会显示日志文件名称。
备库也需要在my.cnf中增加类似的配置,同样需要重启服务器:
log_bin = mysql-bin
server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
log_slave_updates = 1
read_only = 1

启动复制
复制的命令:
change master to master_host=‘server1’, master_user=‘rep1’, master_password=‘password’, master_log_file=‘mysql-bin.000001’, master_log_pos=0;
通过中心show slave status语句检查复制是否正确执行。

运行下面的命令开始复制:
start slave;

通过执行show processlist;可以看到连接

猜你喜欢

转载自blog.csdn.net/zhanglinlove/article/details/84069704
今日推荐