半同步复制的实现
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,1、在主服务器上的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/my.cnf[root@l
千家信息网最后更新 2025年12月01日半同步复制的实现
1、在主服务器上的配置
1)安装mariadb-server
[root@localhost ~]# yum -y install mariadb-server
2)编辑/etc/my.cnf
[root@localhost ~]# vim /etc/my.cnf skip_name_resolve = ON innodb_file_per_table = ON server-id = 1 log-bin = master-log
3)授权可以复制本地数据库信息的主机
[root@localhost ~]# systemctl start mariadb.service (启动mariadb server)[root@localhost ~]# mysql MariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd'; MariaDB [(none)]> flush privileges;MariaDB [(none)]> show master status\G (查看主服务器的状态信息,在从服务器中要用到)*************************** 1. row *************************** File: master-log.000003 (正在使用的二进制日志文件) Position: 245 (所处的位置) Binlog_Do_DB: Binlog_Ignore_DB:
4)安装rplsemisync_master插件,并启用
[root@localhost ~]# mysqlMariaDB [(none)]> install plugin rpl_semi_sync_master soname 'semisync_master.so';MariaDB [(none)]> set global rpl_semi_sync_master_enabled = ON; 补充:MariaDB [(none)]> show plugins;(可查看插件是否激活)MariaDB [(none)]> show global variables like 'rpl_semi%';(可查看安装的插件是否启用)MariaDB [(none)]> show global status like '%semi%';(可查看从服务器的个数,此时是0个)
2、从服务器的配置
1)安装mariadb-server
[root@localhost ~]# yum -y install mariadb-server
2)编辑/etc/my.cnf文件
[root@localhost ~]# vim /etc/my.cnf 在[mysqld]段的最后添加以下内容 skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 (id号不能跟主服务器相同) relay-log = slave-log (自定义二进制日志文件名)
3)设置要从哪个主服务器的那个位置开始同步
[root@localhost ~]# systemctl start mariadb.service[root@localhost ~]# mysql MariaDB [(none)]> change master to master_host='10.1.51.60',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=245;
4)安装rplsemisync_slave插件并启用
[root@localhost ~]# mysql MariaDB [(none)]> install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; MariaDB [(none)]> set global rpl_semi_sync_slave_enabled = ON; MariaDB [(none)]> start slave;
完成上面配置后,可以在主服务器上查看半同步复制的相关信息,命令如下:
MariaDB [(none)]> show global status like '%semi%'; Rpl_semi_sync_master_clients 1 (从服务器有一台)
3、测试
测试以个人实际情况而定
1)在主服务器上导入事先准备好的数据库hellodb.sql
MariaDB [hellodb]> source /root/hellodb.sql;
2)在主服务器上查看半同步复制的状态
MariaDB [hellodb]> show master status;+-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-log.000003 | 8102 | | |+-------------------+----------+--------------+------------------+MariaDB [hellodb]> show global status like '%semi%';+--------------------------------------------+-------+| Variable_name | Value |+--------------------------------------------+-------+| Rpl_semi_sync_master_clients | 1 || Rpl_semi_sync_master_net_avg_wait_time | 1684 || Rpl_semi_sync_master_net_wait_time | 60630 || Rpl_semi_sync_master_net_waits | 36 || Rpl_semi_sync_master_no_times | 1 || Rpl_semi_sync_master_no_tx | 1 || Rpl_semi_sync_master_status | ON || Rpl_semi_sync_master_timefunc_failures | 0 || Rpl_semi_sync_master_tx_avg_wait_time | 1884 || Rpl_semi_sync_master_tx_wait_time | 65965 || Rpl_semi_sync_master_tx_waits | 35 || Rpl_semi_sync_master_wait_pos_backtraverse | 0 || Rpl_semi_sync_master_wait_sessions | 0 || Rpl_semi_sync_master_yes_tx | 35 |+--------------------------------------------+-------+
3)在从服务器上查看是否同步
MariaDB [(none)]> show databases;MariaDB [(none)]> use hellodb;MariaDB [hellodb]> select * from students;
补充:基于上面的半同步复制配置复制的过滤器,复制过滤最好在从服务器上设置,步骤如下
1、从服务器的配置
1)关闭mariadb server
[root@localhost ~]# systemctl stop mariadb.service
2)编辑/etc/my.cnf文件
[root@localhost ~]# vim /etc/my.cnf skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 relay-log = slave-log replicate-do-db = mydb (只复制mydb数据库的内容)补充:常用的过滤选项如下 Replicate_Do_DB= Replicate_Ignore_DB= Replicate_Do_Table= Replicate_Ignore_Table= Replicate_Wild_Do_Table= Replicate_Wild_Ignore_Table=
3)重启mariadb server
[root@localhost ~]# systemctl start mariadb.service
4)重启mariadb server后,半同步复制功能将被关闭,因此要重新启动
MariaDB [(none)]> show global variables like '%semi%';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| rpl_semi_sync_slave_enabled | OFF || rpl_semi_sync_slave_trace_level | 32 |+---------------------------------+-------+MariaDB [(none)]> set global rpl_semi_sync_slave_enabled = ON;MariaDB [(none)]> stop slave;(需先关闭从服务器复制功能再重启)MariaDB [(none)]> start slave;
2、测试
1)主服务器上的hellodb数据库创建一个新表semitable
MariaDB [hellodb]> create table semitable (id int);
2)在从服务器上查看hellodb数据库是否有semitable
MariaDB [(none)]> use hellodbMariaDB [hellodb]> show tables;(并没有)+-------------------+| Tables_in_hellodb |+-------------------+| classes || coc || courses || scores || students || teachers || toc |+-------------------+
3)在主服务器上创建mydb数据库,并为其创建一个tbl1表
MariaDB [hellodb]> create database mydb;
4)在从服务器上查看mydb数据库的是否有tbl1表
MariaDB [hellodb]> use mydb;MariaDB [mydb]> show tables; (可以查看到)+----------------+| Tables_in_mydb |+----------------+| tbl1 |+----------------+
服务器
服务
数据
数据库
同步
配置
插件
文件
信息
测试
二进制
位置
内容
功能
日志
状态
相同
个人
个数
主机
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
铭冠网络安全怎么解决
网络安全相关基金
粮食局网络安全自查总结
服务器起什么作用
用云服务器搭建mc基岩版
大话西游2最新服务器
地下城堡3怎样选择服务器
网站服务器提高并发量
湖北省农业银行网络安全宣传
飞狐服务器
碧蓝航线服务器没了好怎么办
安徽抖动互联网科技
大型数据库与小型机技术方向
软件开发主要包括哪些问题
甘肃庄浪网络安全大队
软件开发项目 合同税费
瑞翊网络技术公司
甘肃信息化工业互联网软件开发
服务器怎么管理网站后台
考试计算机网络技术专业测试
华三服务器pcb板供货商
软件开发的技术架构都包括什么
上海付正网络技术
巩固网络安全态势
学生租云服务器
文件上传到文件服务器
大学毕业网络安全
数据库sql登录密码忘记了
数据库物理结构怎么写
数据库连接api接口填报数据