mysql半同步主从复制

在 MySQL5.5以前, MySQL的复制是异步操做,主库和从库的数据之间存在必定的延迟,这样存在一个隐患:当在主库上写人一个事务并提交成功,而从库还没有获得主库推送的 Binlog日志时,主库宕机了,例如主库可能因磁盘损坏、内存故障等形成主库上该事务 Binlog丢失,此时从库就可能损失这个事务,从而形成主从不一致。html

半同步复制与异步复制的安装区别:半同步复制须要安装建立mysql

 

查看主库Mysql是否开启binlog日志

show variables like 'log_bin'sql

刚开始是关闭(off)的,在如下配置完成后,会自动打开数据库

(1)首先,判断 MySQL服务器是否支持动态增长插件:服务器

mysql> select @@have_dynamic_loading;异步

2)确认支持动态增长插件后,检查 MySQL(mysql5.6及以上均存在 )的安装目录下是否存在插件:测试

一:安装插件:spa

在主库上安装插件semisync_master.so:插件

mysql> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';线程

从库上则安装 semisync_slave.so插件:

mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';

安装完成后,从 plugin表中可以看到刚才安装的插件

mysql> select * from mysql.plugin;

3)须要分别在主库和从库上配置参数打开半同步semi-sync,默认半同步设置是不打开的,主库上配置全局参数:

mysql> set global rpl_semi_sync_master_enabled=1;

mysql> set global rpl_semi_sync_master_timeout=30000;

show variables like '%rpl_semi_sync_master%';

从库上同样配置全局参数:

mysql> set global rpl_semi_sync_slave_enabled=1;

show variables like '%rpl_semi_sync_slave_enabled%';

二:异步主从复制配置

一、确保主从库安装了相同版本的数据库。

二、在主库上,设置一个复制使用的帐户,并授予 REPLICATION SLAVE权限。这里建立一个复制用户repl,能够从IP为172.17.0.2(从库IP)的主机进行链接:

命令文本:

GRANT REPLICATION SLAVE ON *.* To 'rep1'@'172.17

三、修改主数据库服务器的配置文件 my.cnf,开启 BINLOG,并设置 server-id的值。这两个参数的修改须要从新启动数据库服务才能够生效

# 寻找MySQL的配置文件 my.cnf find / -name my.cnf

vi /etc/my.cnf
server-id = 1 #惟一,不能和主数据库的配置相同,若是有多个从数据库服务器,每一个从数据库服务器必须有本身惟一的 server-id值
log-bin = mysql-bin #开启BINLOG 二进制日志

# 主数据库从新启动

mysql service mysqld restart

四、SHOW MASTER STATUS; # 主数据库查看状态

五、# 寻找从库MySQL的配置文件

my.cnf find / -name my.cnf

vi /etc/my.cnf

server-id=2

六、重启从库mysql服务

mysql service mysqld restart

七、对从数据库服务器作相应设置,指定复制使用的用户,主数据库服务器的IP、端口

以及开始执行复制的日志文件和位置等,参考代码以下:

mysql> CHANGE MASTER TO

->MASTER_HOST=master host name

->MASTER_USER=replication_user_name

-> MASTER PASSWORD=replication_password

->MASTER_LOG_FILE='recorded_log_file_name

->MASTER_LOG_POS=recorded _log_position

举例说明以下:

CHANGE MASTER TO MASTER_HOST='172.17.0.3',MASTER_PORT=3306,MASTER_USER='rep1',MASTER_PASSWORD='1234test' ,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=527;

八、在从库上,启动 slave同步线程

start slave;

九、# 从库查看状态

show slave status\G;

当Slave_IO_Running和Slave_SQL_Running都为YES的时候,表示主从复制配置成功了。

slave上执行 show processlist\G 命令将显示相似以下的进程:

十、在master上执行 show processlist\G命令将显示相似以下的进程:

13测试:

主库上新建数据库和表,并插入数据,看看从库中是否会自动建立相关的数据库和表、插入数据。

CREATE TABLE student (id int,name varchar(20));

相关文章
相关标签/搜索