Mysql MHA部署中什么是主从复制

分类:编程技术 时间:2024-02-20 15:38 浏览:0 评论:0
0
本文向大家介绍一下Mysql MHA部署中什么是主从复制。内容非常详细。有兴趣的朋友可以参考一下。希望对大家有所帮助。

Mysql MHA部署-主从复制

架构说明:

参考:http://www.zhaibibei.cn/mysql/mha/

搭建主从复制

1 Mysql安装

2 rac1(187主)、rac3(223从)配置异步复制

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

< p>mysql硬nofile 65536

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

p>

query_cache_type = 0

query_cache_size = 0

join_buffer_size = 64M

tmp_table_size = 64M

max_allowed_pa​​cket = 32M 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>lvm2-python-libs-2.02.177-4.el7.x86_64

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 = 14

log-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

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秒)

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 从备库导入数据

接下来我们将备份的数据导入到备份中

[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 开始同步

接下来我们启用同步

首先我们检查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启用半同步

首先我们启用半同步插件

主库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';

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

|变量名 |值 |

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

| Rpl_semi_sync_master_status | Rpl_semi_sync_master_status开 |

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

集合中的 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”的状态;

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

|变量名      |值 |

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

| Rpl_semi_sync_master_status | Rpl_semi_sync_master_status关闭 |

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

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部署中的主从复制,这里分享一下。希望以上内容能够对大家有所帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Mysql MHA部署中什么是主从复制

用户评论