半同步复制的实现
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,1、在主服务器上的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/my.cnf[root@l
千家信息网最后更新 2025年01月24日半同步复制的实现
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安全错误
数据库的锁怎样保障安全
服务器管理查看服务器
简阳中学网络安全宣传周活动
网络安全是什么用
技能鉴定软件开发
计算机软件开发及后期服务
北京布比网络技术公司
网络安全培训文章
浪潮服务器修改u盘驱动
使用权数据库参数类型
云校家网络安全升级登录不上
服务器装完系统提示管理员
计算机网络技术纵向
扫码后从服务器上下载
大专软件开发学什么好
2020网络安全薪资
建筑企业网络安全建设
连接dota2协调服务器
海淀区发展软件开发怎么样
农村管理软件开发
万方数据库与知网数据库
山东特色软件开发诚信服务
网站都有数据库吗
万方数据库文献相似性检测服务
以软件开发商聚集地为特色
软件开发用笔记本如何挑选
虚拟机怎么管理多个服务器
健值存储数据库通常用来应对
曲阜师范大学网络安全
共建网络安全目的
wd数据库渗透的技术