Mysql MHA部署中什么是主从复制
Mysql MHA部署-主从复制
架构说明:
参考:http://www.zhaibibei.cn/mysql/mha/
搭建主从复制 strong>
1 Mysql安装
2 rac1(187主)、rac3(223从)配置异步复制 p>
3 rac1(187主)、rac2(188从)配置半同步复制
我们根据上面的拓扑建立主从关系,192.168 .2.223使用半同步,192.168.2.223使用异步
使用基于GTID的复制,否则建议关闭GTID功能
这里就不介绍了,参见上一篇详情如图
注意,在做主从同步时,建议清理slave库的相关信息
reset master ;reset Slave all;
时间同步:
[root@rac1 ~ ]# ntpdate cn.pool.ntp.org
14 Mar 15:37:01 ntpdate[31863]:步进时间服务器203.107.6.88 偏移 2.987670 秒
[root@rac1 ~ ]# 日期
2023 年 3 月 14 日星期六 15:37:17 CST 2023
1 Mysql安装
--rac1(主187)、rac2(从188)、rac3(从223)分别安装Mysql
1.1配置限制
[root@rac1 package ]# cat>>/etc/security/limits.conf< mysql soft nofile 1024
mysql软nproc 4095
mysql硬nproc 16384
mysql软堆栈10240
mysql硬堆栈32768
EOF
1.2系统内核参数
Shmmax和shmall设置 shmmax指的是单个内存segm的最大值ent.单位是字节。 shmall指的是可以使用的最大内存大小。
单位是页。页大小可以通过getconf PAGE_SIZE命令查询。一般操作系统页面大小为4096字节。例如操作系统内存为8G,80%被Oracle使用,则kernel.shmmax=(8 * 0.8 * 1024 * 1024 * 1024 )=6871947673 kernel.shmall=kernel.shmmax/4096=1677721
如果默认值较大,请保持默认值
cat>>/etc/sysctl.conf< fs.file-max = 6815744< /p> kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 fs.aio-max-nr = 1048576 # vm.min_free_kbytes = 524288 vm.swappiness= 5 # vm .nr_hugepages =1024 # vm.hugetlb_shm_group = 2000 净值。 core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.ip_local_port_range = 1024 65500 1.3目录规划 目录名称参数名称路径地址 安装目录basedir/usr/local/mysql 数据文件目录datadir/data/mysql/data 临时文件目录tmpdir/data/mysql/tmp socket文件目录socket/data/mysql/ data/mysql.sock bin日志文件目录log_bin/datalog/mysql/binlog 中继日志文件目录relay_log/datalog/mysql/relaylog 1.4 MySQL5.7下载 下载地址: dev.mysql.com/downloads/mysql 这里使用5.7.28版本 [root@rac1 mysql]# pwd /package/mysql [root@rac1 mysql]# ll -rth 总计692M -rw-r--r-- 1根根692M 3月14日11:49 mysql-5.7.28-linux-glibc2.12-x86_64。 tar.gz [root@rac1 mysql]# 1.5 创建新用户和目录 [root @ rac1 ~]# /usr/sbin/groupadd -g 105 mysql [root@rac1 ~]# /usr/sbin/useradd -u 105 -g mysql mysql [root@rac1 ~]# echo " 123456" |passwd mysql --stdin [root@rac1 ~]# mkdir -p /data/mysql/software [root@rac1 ~]# mkdir -p /usr /local/mysql [root@rac1 ~]# mkdir -p /data/mysql/data [root@rac1 ~]# mkdir -p /datalog/mysql/binlog [root@rac1 ~]# mkdir -p /datalog/mysql/relaylog [root@rac1 ~]# chown -R mysql: mysql /usr/local/mysql [root@rac1 ~]# mkdir -p /data/mysql/tmp [root@rac1 ~]# chown -R mysql:mysql /data/mysql [root@rac1 ~]# chown -R mysql:mysql /datalog/mysql/ 1.6 配置环境变量 [root@rac1 ~]# su - mysql 尝试创建目录 /home/mysql/perl5 [mysql@rac1 ~]$ vim .bash_profile ... 导出 MYSQL_HOME=/usr/local/mysql 导出 PATH=$HOME/bin:$MYSQL_HOME/bin:$PATH export LD_LIBRARY_PATH=$MYSQL_HOME/lib:$LD_LIBRARY_PATH [mysql@rac1 ~]$ source .bash_profile 1.7 创建配置文件 强> [root@rac1 ~]# cp /etc/my.cnf /etc/my.cnf cnf.bak [root@rac1 ~]# vim /etc/my.cnf [mysql] 用户= 密码= [mysqld] #----------------MySQL基本设置---------- -------# 服务器 ID = 1723161113 端口 = 3306 用户 = mysql pid 文件= mysql.pid character_set_server = utf8mb4 default_storage_engine = InnoDB skip_name_resolve = 1 lower_case_table_names = 1 explicit_defaults_for_timestamp = 1 open_files_limit = 65535 max_connections = 1000 max_connect_errors = 100000 basedir = /usr/local/mysql< /p> datadir = /data/mysql/data tmpdir = /data/mysql/tmp socket = /data/mysql/data/mysql.sock tmpdir = /data/mysql/tmp socket = /data/mysql/data/mysql.sock query_cache_type = 0 query_cache_size = 0 join_buffer_size = 64M tmp_table_size = 64M max_allowed_packet = 32M p> p> read_buffer_size = 16M read_rnd_buffer_size = 32M sort_buffer_size = 32M log_error_verbosity=2 log_timestamps=SYSTEM #-----------------MySQL日志设置--------- --------# log_error = mysql-error.log log_bin = /datalog/mysql/binlog/mysql-bin.log slow_query_log_file = mysql-slow.log relay_log = /datalog/mysql/relaylog/mysql-relay.log log_slave_updates = 1 sync_binlog = 1 relay_log_recovery = 1 binlog_format = 行 expire_logs_days = 14 slow_query_log = 1 long_query_time = 2 log_queries_not_using_indexes = 1 log_throttle_queries_not_using_indexes = 10 log_slow_admin_statements = 1 log_slow_slave_statements = 1 min_examined_row_limit = 1000 #-------- ---------MySQL复制设置-----------------# slave_skip_errors = ddl_exist_errors master_info_repository = TABLE relay_log_info_repository = 表 #gtid_mode = on #enforce_gtid_consistency = 1 binlog_rows_query_log_events = 1 # -----------------MySQL InnoDB设置-----------------# innodb_page_size = 16384 innodb_buffer_pool_size = 25600M innodb_data_file_path = ibdata1:1G:自动扩展 innodb_buffer_pool_instances = 8 innodb_file_per_table = 1 innodb_buffer_pool_load_at_startup = 1 innodb_buffer_pool_dump_at_shutdown = 1 innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 5 innodb_io_capacity = 800 innodb_io_capacity_max = 2000 innodb_flush_method = O_DIRECT innodb_file_format = Barracuda innodb_file_format_max = Barracuda innodb_undo_logs = 128 innodb_undo_tablespaces = 3 innodb_flush_neighbors = 1 innodb_log_file_size = 2G innodb_log_buffer_size = 16777216 innodb_print_all_deadlocks = 1 innodb_strict_mode = 1 innodb_sort_buffer_size = 67108864 #----------------MySQL半复制设置---- -------------# #plugin_dir = /usr/local/mysql/lib/plugin #plugin_load = "rpl_semi_sync_master=semisync_master.so ;rpl_semi_sync_slave=semisync_slave.so" #loose_rpl_semi_sync_master_enabled = 1 #loose_rpl_semi_sync_slave_enabled = 1 #loose_rpl_semi_sync_master_time out = 5000 修改my.c_slave=semisync_slave.so" cnf权限 [root@rac1 ~]# chown mysql.mysql /etc/my.cnf 1.8依赖包检查 [root@rac1 ~]# rpm -qa libaio* libaio-0.3.109-13.el7.x86_64 libaio-devel -0.3.109- 13.el7.x86_64 [root@rac1 ~]# rpm -qa lvm2-* lvm2-libs-2.02.177-4.el7.x86_64
p>
1.9解压文件
[root@rac1 ~]# chown mysql.mysql /package/mysql -R
[mysql@rac1 ~]$ cd /package/mysql/
[mysql@rac1 mysql]$ ls
mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[mysql@rac1 mysql]$ tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar .gz -C /usr/local/mysql/ --strip-components=1
mysql-5.7.28-linux-glibc2.12-x86_64/bin/myisam_ftdump
mysql -5.7.28-linux-glibc2.12-x86_64/bin/myisamchk
mysql-5.7.28-linux-glibc2.12-x86_64/bin/myisamlog
......
1.10配置服务文件
这里将mysql.server文件复制到init.d目录下,以便可以作为服务启动和停止
[root@rac1 ~ ]# cp /usr/local/mysql/support -files/mysql.server /etc/init.d/mysqld
此处修改以下内容
[root@rac1 ~]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql/data
lockdir='/ data/mysql/data'
mysqld_pid_file_path=/data/mysql/data/mysql.pid
1.11 初始化数据库
[mysql@rac1 mysql]$ /usr/local /mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
[root@rac1 ~] # tail -f /data/mysql/data/ mysql-error.log
……
2023-03-14T13:22:12.786017+08:00 1 【注】root@localhost生成临时密码:7DO4gs27;YOM
1.12启动和关闭数据库
[mysql@rac1 mysql]$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
[1] 18642
2023 -03-14T05:24:05.258268Z mysqld_safe 记录到“/data/mysql/data/mysql-error.log”。
2023-03-14T05:24:05.320993Z mysqld_safe 使用数据库启动 mysqld 守护进程from /data/mysql/data
[mysql@rac1 mysql]$ netstat -lntp|grep mysqld
(并非所有进程都能识别,非自有进程信息
将不会显示,您需要 root 权限才能看到全部内容。)
tcp6 0 0 :: 3306 :::*Listen 19567/MySQLD
您可以使用以下命令启动和停止数据库
p>[mysql@rac1 mysql]$ service mysqld stop
关闭MySQL....2023-03-14T05:25 :16.603331Z mysqld_safe mysqld from pid file /data/mysql/data /mysql.pid结束
[确定]
[1]+完成/usr/local/mysql/bin/ mysqld_safe --defaults-file=/etc/my.cnf --user=mysql
[mysql@rac1 mysql]$ service mysqld start
正在启动MySQL...... [ OK ]
设置MySQL自动启动ally
chkconfig mysqld on
1.13 连接数据库
默认密码在错误文件中
< p>[mysql@rac1 mysql]$ cat /data/ mysql/data/mysql-error.log |grep 密码2023-03-14T13:22:12.786017+08:00 1 【注】A为root@localhost生成临时密码:7DO4gs27;YOM
使用以下命令连接
[mysql@rac1 mysql]$ mysql -S /data/mysql/data/mysql .sock -uroot -p
输入密码:7DO4gs27;YOM
欢迎使用MySQL监视器。命令以 ; 结尾或 \g。
您的 MySQL 连接 ID 是 6
服务器版本:5.7。 28-log
版权所有 (c) 2000、2023,Oracle 和/或其附属公司。保留所有权利。
Oracle 是 Oracle Corporation 和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。
输入“帮助”;或“\h”寻求帮助。输入 '\c' 清除当前输入语句。
mysql> showdatabases;
错误 1820 (HY000): 您必须在执行此语句之前,请使用 ALTER USER 语句重置密码。
mysql> alter user 'root'@'localhost'identified by '123456';
查询正常,0 行受影响( 0.00 秒)
[mysql@rac1 mysql]$ mysql -S /data/mysql/data/mysql.sock -uroot -p123456
mysql: [警告] 使用密码命令行界面可能不安全。
欢迎使用 MySQL 监视器。命令以 ; 结尾或 \g。
您的 MySQL 连接 ID 为 7
服务器版本:5.7.28-log MySQL Community Server (GPL)
版权所有 (c) 2000 ,2023 年,Oracle 和/或其附属公司。保留所有权利。
Oracle 是 Oracle Corporation 和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。
输入“help;”或“\h”寻求帮助。输入“\c”清除当前输入语句。
mysql> showdatabases;
+---------------- --+
|数据库|
+--------------------+
|信息架构 |
| mysql |
|性能架构 |
| sys |
+------ -------------+
集合中 4 行(0.00 秒)
< p>2 rac1(187 master),rac3(223 Slave)配置异步复制本节我们的内容是MySQL复制。 MySQL复制有两种形式
基于二进制日志文件位置
基于GTID
本节是第一种基于二进制日志文件位置< /p>
2.1开启二进制日志功能
无论在哪里使用这两种方式,我们都需要开启二进制日志功能
< p>如果没有启用,需要在my.cnf文件中添加以下参数并重启数据库才能生效---主库187 rac1
[ mysqld]
server-id = 1
binlog_format = row
log_bin = /datalog/mysql/binlog/mysql-bin .log
< p>expire_logs_days = 14log-slave-updates=ON
---从机 223 rac3
[mysqld]
服务器-id = 3
binlog_format = 行
log_bin =/datalog/mysql/binlog/mysql-bin.log
expire_logs_days = 14
log-slave-updates=ON
read_only=1
---重新启动mysql
[mysql@rac1 ~]$ service mysqld stop
正在关闭MySQL.. ...[确定]
[mysql@rac1 ~]$ service mysqld start
正在启动MySQL......[ OK ]
2.2 检查UUID是否为一致
需要注意的是,如果从库是从主库克隆过来的,那么uuid会是一样的。会报错
文件位于daadir的auto.cnf文件
vim /data/mysql/data/auto.cnf
如果同样,可以删除该文件然后重新启动数据库,就会生成一个新文件
2.3创建复制帐户
接下来我们创建一个独立账户用于复制账户
主库和从库
[mysql@rac1 ~]$ mysql -S /data/mysql/data/mysql.sock -uroot -p p>
mysql> 创建用户 'repl'@'192.168.2.187' 由 'rpl' 标识;
mysql> 将 *.* 上的复制从属授予 'repl'@'192.168.2.187';
p>mysql> 创建由 'rpl' 标识的用户 'repl'@'192.168.2.223';
mysql> 将 *.* 上的复制从机授予 'repl'@'192.168.2.223' ;
mysql> 刷新权限;
mysql> 选择主机,用户来自用户;
+----------------+----------------+
|主持人|用户 |
+----------------+----------------+
< p>| 192.168.2.187 |回复 || 192.168.2.223 |回复 |
|本地主机 | mysql.session |
|本地主机 | mysql.sys |
|本地主机 | root |
+-------------+------------- --+
5 行set (0.00 sec)
这里我们限制帐户只能从两个同步服务器连接
2.4 备份主数据库
< p>---创建测试数据(模拟生产数据)mysql> CREATE DATABASE Jumptest DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
查询正常,1行受影响(0.00秒) p>
mysql>使用jumptest
数据库已更改
mysql>源/package/mysql/jumpserver_bak_2023_03_13_22_00_01.sql
---备份
[mysql@rac1 ~]$ mysqldump -S /data/mysql/data/mysql.sock -uroot -p --databases Jumptest --single-transaction --master-data=2 --set-gtid-purged=off --triggers --events --routines> /tmp/dumpmaster.sql
输入密码:
[mysql@rac1 ~]$ ll -rth /tmp/dumpmaster.sql
-rw-r--r-- 1 mysql mysql 19M 三月 14 日 17:04 / tmp/dumpmaster.sql
2.5 文件传输
接下来,将主库的dump文件传输到备份。然后更改备库的文件权限
主库
[mysql@rac1 ~]$ scp /tmp/dumpmaster.sql root@192.168.2.223:/tmp
< p>从数据库[root@rac3 ~]# chown mysql:mysql /tmp/dumpmaster.sql
2.6 从备库导入数据 strong>
接下来我们将备份的数据导入到备份中
[mysql@rac3 ~]$ mysql -S /data/mysql/data/mysql.sock -uroot -p
输入密码:
欢迎来到MySQL 监视器。命令以 ; 结尾或 \g。
您的 MySQL 连接 ID 为 3
服务器版本:5.7 .28-log MySQL Community Server (GPL)
版权所有 (c) 2000 ,2023 年,Oracle 和/或其附属公司。保留所有权利。
Oracle 是 Oracle Corporation 和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。
输入“帮助”;或“\h”寻求帮助。输入“\c”清除当前输入语句。
mysql> CREATE DATABASE Jumptest DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
查询正常,1 行受影响(0.01 秒)
p>mysql>使用jumptest
数据库已更改
mysql> source /tmp/dumpmaster.sql
2.7 开始同步 strong>
接下来我们启用同步
首先我们检查dumpmaster.sql文件中的master信息
mysql> show master status;
< p >+------------------+----------+--------------+-- - ---------------+-------------------------------- - ----------+|文件|位置 | Binlog_Do_DB | Binlog_Ignore_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------- -----+------------+---------- ---+------------------ +-------------------------- --------------------+
| mysql-bin.000004 | 34751569 | 34751569 ---------------+----------+--------------+-------- ----------+---------------------------------------------------- ---+
1 row in set (0.00 sec)
---从库打开同步命令2.223
mysql>将master改为master_host ='192.168.2.187', master_user='repl', master_password='rpl',master_log_file='mysql-bin.000004',master_log_pos= 34751569;
查询正常,0行受影响,2条警告( 0.03 秒)
mysql> start Slave;
查询正常,0 行受影响 (0.00 秒)
2.8 从数据库查看同步状态
strong>
使用如下命令检查同步是否正常
主要关注以下几点
Slave_IO_Running需要YES
Slave_SQL_Running 需要为 YES
Seconds_Behind_Master 需要为 0
mysql> 显示从属状态\G
******************** ** ****** 1.行****************************
Slave_IO_State:等待主机发送事件
.
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 34751569
. Relay_Log_Pos:320
Relay_Master_Log_File:mysql-bin.000004
Slave_IO_Running:是
Slave_SQL_Running:是
......
Seconds_Behind_Master: 0
......
2.9 重启和重置复制
使用以下命令关闭并重新启动
mysql>stop Slave;
mysql>start slave;
我们可以独立重启IO进程或者SQL进程
mysql>stop Slave sql_thread;
mysql>stop Slave io_thread;
< p>mysql>启动slave io_thread;mysql>启动slave sql_thread;
使用以下命令重置复制
mysql>重置slave all;
p>3 rac1(187主)、rac3(188从)配置半同步复制
3.1半同步介绍< /p>
异步复制。主库将二进制日志发送到从库后,不需要确认从库是否接受并应用。 ,这可能会导致数据丢失。
MySQL从5.5版本开始推出了半同步功能,相当于Oracle DG的最大保护模式。它要求从库在主库完成提交之前接收并应用日志,保证数据。
启用 sem 需要满足以下要求i-synchronization:
MySQL 5.5及以上
变量have_dynamic_loading为YES
来自Library初始化主库数据的3.2 188< /p>
188:
mysql> 创建数据库跳转测试 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
查询正常,1 行受影响(0.01 秒)
mysql> 使用jumptest
数据库已更改
mysql> source /tmp/dumpmaster.sql
3.3 创建副本帐号< /p>
[mysql@rac1 ~]$ mysql -S /data/mysql/data/mysql.sock -uroot -p
mysql> 创建用户 'repl' @'192.168.2.187'由“rpl”标识;
mysql> 将 *.* 上的复制从属授予“repl”@“192.168.2.187”;
mysql> 创建由“rpl”标识的用户“repl”@“192.168.2.188”;
mysql> 将 *.* 上的复制从属授予 'repl'@'192.168.2.188';
mysql > 刷新权限;
mysql> 使用 mysql
---来自库188
mysql>选择主机,用户来自用户;
+------------- --+----------------+
|主持人|用户 |
+---------------+----------------+
| 192.168.2.187 |回复 |
| 192.168.2.188 |回复 |
|本地主机 | mysql.session |
|本地主机 | mysql.sys |
|本地主机 |根 |
+----------------+------------ ----+
5 rows in set (0.00 sec)
---主数据库187
mysql> select host,user from user;
+----- --------+----------------+
|主持人|用户 |
+----------------+----------------+
| 192.168 .2.187 |回复 |
| 192.168.2.188 |回复 |
| 192.168.2.223 |回复 |
|本地主机 | mysql.session |
|本地主机 | mysql.sys |
|本地主机 | root |
+--------------+--- ------------+
6 行in set (0.00 sec)
3.4加载半同步插件
由于需要执行INSTALL PLUGIN、SET GLOBAL、STOP SLAVE等操作START SLAVE操作,用户需要有SUPER权限
主库和从库
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
在这里安装半同步主从插件
考虑到后面可能需要切换主从,这里都安装在主从库上
确认是否加载成功
mysql> show plugins;
< ...| rpl_semi_sync_master | rpl_semi_sync_master |活跃 |复制| semisync_master.so | GPL |
| rpl_semi_sync_slave | rpl_semi_sync_slave |活跃 |复制| semisync_slave.so | GPL |
+----------------------------+---------+ ------ --------------+------------------------+--- ------+
mysql> 从 INFORMATION_SCHEMA.PLUGINS 中选择 PLUGIN_NAME、PLUGIN_STATUS,其中 PLUGIN_NAME LIKE '%semi%';
+--------- --- --+----------------------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+------------ -----------+---------------+< /p>
| rpl_semi_sync_master | rpl_semi_sync_master |活动 |
| rpl_semi_sync_slave | rpl_semi_sync_slave |活动 |
+------------ ----------+---------------+< /p>
2行一组(0.00秒)
3.5启用半同步
首先我们启用半同步插件 p>
主库187
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
p>从库188
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
mysql>将master更改为master_host='192.168.2.187',master_user='repl',master_password='rpl',master_log_file='mysql-bin.000004',master_log_pos=34752186;
mysql> start Slave;
mysql> show Slave status \G;
之后需要重启IO线程才能使半同步生效,也可以直接重启复制
从库
mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;
如果从库无法与主库通信一定时间后,会自动降为异步模式
这个时间由rpl_semi_sync_master_timeout参数控制,单位为毫秒
3.6检查半同步状态
我们使用如下命令来检查半同步是否正常工作
主库的master和从库的slave从库全部需要开启
主库
mysql>显示状态如'Rpl_semi_sync_master_status';
+---------- ----------------------+--- ----+
|变量名 |值 |
+------------------------ ----+--------+ p>
| Rpl_semi_sync_master_status | Rpl_semi_sync_master_status开 |
+----------------- ------------+--------+ p>
集合中的 1 行(0.02 秒)
mysql> 显示类似“Rpl_semi_sync_slave_status”的状态;
+------------- ---------------+--------+
|变量名 |值 |
+----------------------------+---- ---+
| Rpl_semi_sync_slave_status | Rpl_semi_sync_slave_status关闭 |
+-------------------------- --+--------+
集合中的 1 行(0.00 秒)
从库
mysql> 显示类似“Rpl_semi_sync_slave_status”的状态;
+----- -----------------------+--------+
|变量名 |值 |
+----------------------------+----- --+
| Rpl_semi_sync_slave_status | Rpl_semi_sync_slave_status开 |
+----------------------------+-------+
集合中的 1 行(0.00 秒)
mysql> 显示类似“Rpl_semi_sync_master_status”的状态;
+--------- ----- ---------------+--------+
|变量名 |值 |
+- ----------------------------+--------+ p>
| Rpl_semi_sync_master_status | Rpl_semi_sync_master_status关闭 |
+----------------------------+--------+ p>
1 row in set (0.01 sec)
3.7 写入配置文件
接下来我们将命令写入配置文件中,以便之后restart 自动启动
考虑到后期可能需要主从切换,主从库上的半同步主从设置为启动
主库187和从库188
p>[mysql@rac1 ~]$ vim /etc/my.cnf
#---------------- --MySQL半复制设置-- --------------#
plugin_dir = /usr/local/mysql/lib/plugin
plugin_load = "rpl_semi_sync_master=semisync_master.so ;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_slave_enabled = 1
rpl_semi_sync_master_timeout = 5000
--从库188,223
mysql>停止从库;
查询正常,0行受影响(0.00 sec)
Master 187、Slave 188重启生效:
[mysql@rac1 ~]$ service mysqld restart
正在关闭MySQL.... [确定]
正在启动MySQL...[确定]
测试数据同步
主数据库187
mysql>创建表cjc01 (id int );
查询正常,0 行受影响(0.01 秒)
mysql> insert into cjc01 values(1);
查询正常,1受影响的行(0.02秒)
mysql>插入cjc01值(2);
查询正常,受影响的1行(0.00秒)
mysql>插入写入 cjc01 值 (3);
查询正常,1 行受影响(0.01 秒)
mysql> update cjc01 set id=100 where id=1;
查询正常,1行受影响(0.01秒)
匹配的行:1 更改:1 警告:0
mysql> 从 cjc01 where id=2 删除;
查询正常,1 行受影响(0.00 秒)
mysql> select * from cjc01;
+------+
| id |
+------+
| 100 |
| 3 |
+------+
集合中的 2 行(0.00 秒)
来自库 188
mysql > 从cjc01中选择*;
+------+
| id |
+------+
| 100 |
| 3 |
+------+
集合中的 2 行(0.00 秒)
来自数据库 223
mysql > 从cjc01中选择*;
+------+
| id |
+------+
| 100 |
| 3 |
+ ------+
2 行(0.00 秒)
关于Mysql什么是MHA部署中的主从复制,这里分享一下。希望以上内容能够对大家有所帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Mysql MHA部署中什么是主从复制