MySQL多实例实现半同步复制

MySQL多实例实现半同步复制

主库1:192.168.40.150

主库2:192.168.40.161

从库(2个MySQL实例):192.168.40.162

一:分别在192.168.40.161和192.168.40.150使用【show master status;】记录当前的复制位置

如下所示

mysql> show master status;

+--------------+----------+--------------+------------------+-------------------+

| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+--------------+----------+--------------+------------------+-------------------+

| mysql.000006 | 11426362 |              |                  |                   |

+--------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

二:master(分别在192.168.40.161和192.168.40.150进行如下操作)

1.启用二进制日志

log_bin=mysql

log-bin-index=mysql-index

2.为master选择一个在当前复制架构中惟一的server-id

server-id={0-2^32}

3.创建一个具有复制权限的用户帐号

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘repluser‘@‘192.168.40.162‘ IDENTIFIED BY ‘replpass‘;

mysql> FLUSH PRIVILEGES;

4.分别master的配置文件中的mysqld段添加如下一行,并重启服务

rpl_semi_sync_master_enabled=ON (或者:mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;)

mysql> SHOW GLOBAL VARIABLES LIKE ‘%semi%‘;

mysql> SET GLOBAL rpl_semi_sync_master_enabled=ON;

mysql> SET GLOBAL rpl_semi_sync_master_timeout=1000;

5.配置主从复制时的事务安全:

在主服务器上mysqld段配置:sync_binlog=1

6.重启mysql服务

二、slave(在192.168.40.162的两个mysql实例中进行如下操作)

1.在192.168.40.162配置两个实例:socket端口分别为3306和3307,具体配置请参考配置文件。

2.创建所需要的目录

mkdir -p /data/{mysql3306,mysql3307}

3.分别对192.168.40.161和192.168.40.150的数据目录打包,然后分别上传至192.168.40.162的/data/mysql3306和/data/mysql3307目录下

例如:

# cd /data/mysql/

# tar zcf mysql_162.tar.gz ./*

# scp mysql_162.tar.gz 192.168.40.162:/data/mysql3306/

4.启用中继日志(并关闭二进制日志)

relay-log=/data/mysql3306/relay-3306.log

relay-log-index=/data/mysql3306/relay-log-index-3306.log

5.为slave选择一个在当前复制架构中惟一的server-id

server-id={0-2^32}

6.为slave选择一个在当前复制架构中惟一的server-uuid

修数据目录下的auto.cnf 修数据目录下的auto.cnf 的server-uuid

如将

server-uuid=3fd1f0a1-b34e-11e4-996a-000c29b1b59d

修改为

server-uuid=3fd1f0a1-b34e-11e4-996a-000c29b1b52d

5、复制过滤器

slave:

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

8.重启mysql服务

9.开启半同步复制

从服务器:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;

mysql> SET GLOBAL rpl_semi_sync_slave_enabled=ON;

在主服务器验正半同步复制是否生效:

mysql> SHOW GLOBAL STATUS LIKE ‘%semi%‘;

9.连接至主服务器

mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.40.161‘, MASTER_USER=‘repluser‘,  MASTER_PASSWORD=‘replpass‘,  MASTER_PORT=3306,  MASTER_LOG_FILE=‘mysql.000006‘, MASTER_LOG_POS=11426362;

mysql> START SLAVE;

10.检查主从是否成功

mysql> show slave status;

主服务器配置文件:
[[email protected]_peizi1 ~]# more /etc/my.cnf
[client]
port=3306
socket = /usr/local/mysql/mysql.sock

[mysql]
default-character-set=utf8

[mysqld]
port            = 3306
socket          = /usr/local/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/data/mysql
server_id=1
user=mysql
skip-name-resolve
log_bin=mysql
expire_logs_days = 30

sync_binlog=1
rpl_semi_sync_master_enabled=ON

#slow_log
slow-query-log=On
slow_query_log_file=/data/logs/mysql/peizi-slow.log
long_query_time=1

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8
default-storage-engine=InnoDB
explicit_defaults_for_timestamp=true

skip-external-locking

max_connections=300
query_cache_size=1048576
performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256
tmp_table_size=64M
max_heap_table_size=64M
thread_cache_size=16

myisam_max_sort_file_size=16G
myisam_sort_buffer_size=32M
key_buffer_size=25M
read_buffer_size=128K
read_rnd_buffer_size=256K
sort_buffer_size=256K
join_buffer_size=16M
max_allowed_packet=4M

innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
innodb_buffer_pool_size=64M
innodb_log_file_size=16M
innodb_thread_concurrency=8

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

[mysqld_safe]
log-error=/data/logs/mysql/mysqld.log
pid-file=/usr/local/mysql/tmp/mysqld.pid

多实例从服务器配置文件:
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin

[mysql]
default-character-set=utf8

[mysqld1]
port            = 3306
socket          = /usr/local/mysql/mysql-3306.sock
basedir=/usr/local/mysql
datadir=/data/mysql3306
pid-file=/var/lock/subsys/mysql3306/mysq-3306.pid
server_id=11
user=mysql
skip-name-resolve
expire_logs_days = 30

master-info-file=/data/mysql3306/master-3306.info
read-only
relay-log=/data/mysql3306/relay-3306.log
relay-log-index=/data/mysql3306/relay-log-index-3306.log
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8
default-storage-engine=InnoDB
explicit_defaults_for_timestamp=true

skip-external-locking

max_connections=300
query_cache_size=1048576
performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256
tmp_table_size=64M
thread_cache_size=16

myisam_max_sort_file_size=16G
myisam_sort_buffer_size=32M
key_buffer_size=25M
read_buffer_size=128K
read_rnd_buffer_size=256K
sort_buffer_size=256K
join_buffer_size=16M
max_allowed_packet=4M

innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
innodb_buffer_pool_size=64M
innodb_log_file_size=8M
innodb_thread_concurrency=8

lower_case_table_names=1
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

[mysqld2]
port            = 3307
socket          = /usr/local/mysql/mysql-3307.sock
basedir=/usr/local/mysql
datadir=/data/mysql3307
pid-file=/var/lock/subsys/mysql3307/mysql-3307.pid
server_id=6
user=mysql
skip-name-resolve
expire_logs_days = 30

master-info-file=/data/mysql3307/master-3307.info
read-only
relay-log=/data/mysql3307/relay-3307.log
relay-log-index=/data/mysql3307/relay-log-index-3307.log
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8
default-storage-engine=InnoDB
explicit_defaults_for_timestamp=true

skip-external-locking

max_connections=300
query_cache_size=1048576
performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256
tmp_table_size=64M
thread_cache_size=16

myisam_max_sort_file_size=16G
myisam_sort_buffer_size=32M
key_buffer_size=25M
read_buffer_size=128K
read_rnd_buffer_size=256K
sort_buffer_size=256K
join_buffer_size=16M
max_allowed_packet=4M

innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
innodb_buffer_pool_size=64M
innodb_log_file_size=8M
innodb_thread_concurrency=8

lower_case_table_names=1
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
时间: 2024-09-30 15:04:10

MySQL多实例实现半同步复制的相关文章

MySQL学习笔记12半同步复制

1.1.1. 相关概念 默认情况下,MySQL使用异步复制,即master上的事务执行与slave上的复制操作不需要同步,master不需要等待slave上的复制线程将Binary Log接收完毕即可执行其它事务. 半同步复制时,master上的事务执行与slave上的复制操作需要在某个步骤上进行同步,master需要等待slave上的复制线程接收完毕Binary Log. 异步复制的工作效率比较高,但是在特定条件下,有可能造成master和slave的数据不一致.半同步复制可以降低数据不一致的

mysql主从和mysql主主和半同步复制

一.准备(主从都需要配置):     yum -y install mysql mysql-server #安装mysql   yum -y install ntpdate #安装时间同步   echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root #配置网络时间同步   service mysqld start #启动服务   chkconfig --add 

mysql主从复制中的半同步复制

实验mysql借助google提供的插件,完成半同步复制模型: 物理机依然是win7系统,虚拟机为centos7: 主节点:192.168.255.2 从节点:192.168.255.3 先配置为主从复制模型: 在主节点: ]# vim /etc/my.cnf 从节点: ]# vim /etc/my.cnf 启动两节点的myslq服务: ]# systemctl start mariadb.service 在主节点: 配置有复制权限的账号: > GRANT REPLICATION SLAVE,R

centos7下mysql5.6.30配置单机多实例主从半同步复制

1.在master主服务器上执行: mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; Query OK, 0 rows affected (0.30 sec) mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1; Query OK, 0 rows affected (0.02 sec) mysql> SET GLOBAL rpl_semi_syn

MySQL 5.6 搭建半同步复制

确定是否可以动态安装插件 show variables like '%have_dynamic_loading%'; ls /usr/local/mysql-5.6.38-linux-glibc2.12-x86_64/lib/plugin/semisync_* /usr/local/mysql-5.6.38-linux-glibc2.12-x86_64/lib/plugin/semisync_master.so /usr/local/mysql-5.6.38-linux-glibc2.12-x8

深入MySQL复制(三):半同步复制

1.半同步复制 半同步复制官方手册:https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html 默认情况下,MySQL的复制是异步的,master将新生成的binlog发送给各slave后,无需等待slave的ack回复(slave将接收到的binlog写进relay log后才会回复ack),直接就认为这次DDL/DML成功了. 半同步复制(semi-synchronous replication)是指master在将新生

MHA-结合MySQL半同步复制高可用集群(Centos7)

目录 一.理论概述 本案例部署思路 二.环境 三.部署 部署MHA 部署二进制包MySQL及部署主从复制 部署半同步复制 配置MHA MHA测试 部署lvs+keepalived(lvs1,lvs2) 四.总结 一.理论概述 在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. 优点 缺点 由perl语言开发的开源工具 需要编写脚本或利用第三方工具来实现Vip的配置 支持

MariaDB(MySQL):半同步复制+ssl+复制过滤

一.半同步复制   1.mysql的复制 通过记录主服务器的二进制日志,并在从服务器上进行重放(replay)完成复制,默认都是异步进行的. 2.半同步复制 半同步复制是google贡献给MySQL的一个补丁,在MySQL 5.5之后就支持了,MariaDB都是支持的. MySQL的插件,一般在MySQL安装目录下; 半同步复制插件默认没有启用,需要自己安装,/usr/local/mysql/lib/plugin可以看到semisync_master.so和semisync_slave.so和其

数据库 之 Mysql半同步复制

1  概述 半同步复制指一部分主机同步复制,另一部分主机异步复制 同步的逻辑是用户写操作到主服务器,主服务记录到二进制文件后,主服务会同步发送给从服务器,从服务器响应数据同步后,主服务器才会把响应发给用户.这种方式对IO有强依赖. mysql是高度插件化的,半同步复制插件是google共献给mysql的插件.装有该插件的服务器才能实现同步复制.半同步复制的插件在主节点和从节点是不一样的,各自分别使用专有插件,当插件配置启用后,从节点将同步的方式来同步主服务器数据,其他没有配置的插件的机器为异步同