MYSQL数据库(三)

MySQL集群

主从复制相关

主从复制相关线程
主节点:
dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events从节点:
I/O Thread:向Master请求二进制日志事件,并保存于中继日志中
SQL Thread:从中继日志中读取日志事件,在本地完成重放
跟复制功能相关的文件:
master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等
relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系
mysql-relay-bin.00000#: 中继日志,保存从主节点复制过来的二进制日志,本质就是二进制日志
主从复制特点
异步复制: 客户端性能良好
主从数据不一致比较常见
复制需要考虑二进制日志事件记录格式
STATEMENT(5.0之前), Mariadb5.5 默认使用此格式
ROW(5.1之后,推荐),MySQL 8.0 默认使用此格式
MIXED: Mariadb10.3 默认使用此格式

主从复制实现过程

主节点配置:

​ (1) 启用二进制日志

		[mysqld]
		log_bin

​ (2) 为当前节点设置一个全局惟一的ID号

		[mysqld]
		server-id=#
		log-basename=master  #可选项,设置datadir中日志名称,确保不依赖主机名
		server-id的取值范围
			1 to 4294967295 (>= MariaDB 10.2.2),默认值为1
			0 to 4294967295 (<= MariaDB 10.2.1),默认值为0,如果从节点为0,所有master都将拒绝此slave的连接

​ (3) 查看从二进制日志的文件和位置开始进行复制

		SHOW MASTER STATUS;

​ (4) 创建有复制权限的用户账号

		GRANT REPLICATION SLAVE  ON *.* TO 'repluser'@'HOST' IDENTIFIED BY 'replpass';
		#MySQL8.0 分成两步实现
		mysql> create user repluser@'10.0.0.%' identified by '123456';
		mysql> grant replication slave on *.* to repluser@'10.0.0.%';

从节点配置:

(1) 启动中继日志

	[mysqld]
	server_id=# #为当前节点设置一个全局惟的ID号
	log-bin
	read_only=ON #设置数据库只读,针对supper user无效
	relay_log=relay-log #relay log的文件路径,默认值hostname-relay-bin
	relay_log_index=relay-log.index  #默认值hostname-relay-bin.index

(2) 使用有复制权限的用户账号连接至主服务器,并启动复制线程

CHANGE MASTER TO MASTER_HOST='masterhost', 
MASTER_USER='repluser', 
MASTER_PASSWORD='replpass', 
MASTER_LOG_FILE='mariadb-bin.xxxxxx', 
MASTER_LOG_POS=#;
START SLAVE [IO_THREAD|SQL_THREAD];
SHOW SLAVE STATUS;

主从复制相关和建议

1.限制从服务器为只读
	read_only=ON
	#注意:此限制对拥有SUPER权限的用户均无效
	注意:以下命令会阻止所有用户, 包括主服务器复制的更新
	FLUSH TABLES WITH READ LOCK;
2.在从节点清除信息
	注意:以下都需要先 STOP SLAVE
	RESET SLAVE #从服务器清除master.info ,relay-log.info, relay log ,开始新的relay log
	RESET SLAVE  ALL #清除所有从服务器上设置的主服务器同步信息,如HOST,PORT, USER和 PASSWORD等
3.复制错误解决方法
	可以在从服务器忽略几个主服务器的复制事件,此为global变量,或指定跳过事件的ID
	注意: Centos 8.1以上版本上的MariaDB10.3主从节点同时建同名的库和表不会冲突,建主键记录会产生冲突
	#系统变量,指定跳过复制事件的个数
	SET GLOBAL sql_slave_skip_counter = N
#服务器选项,只读系统变量,指定跳过事件的ID
	[mysqld]
	slave_skip_errors=1007|ALL  
4.复制冲突的解决
	#方法1
	MariaDB [(none)]> stop slave;
	MariaDB [(none)]> set global sql_slave_skip_counter=1;
	MariaDB [(none)]> start slave;
	#方法2
	show slave status\G #查看错误编码
	[root@slave1 ~]#vim /etc/my.cnf.d/mariadb-server.cnf
	[mysqld]
	slave_skip_errors=1007|ALL  #跳过错误
	[root@slave1 ~]#systemctl restart mariadb
	START SLAVE 语句,指定执到特定的点
	START SLAVE [thread_types]
	START SLAVE [SQL_THREAD] UNTIL   MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS =log_pos
	START SLAVE [SQL_THREAD] UNTIL   RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS =log_pos
	thread_types:
    	[thread_type [, thread_type] ... ]
	thread_type: IO_THREAD | SQL_THREAD
5.保证主从复制的事务安全
	在master节点启用参数:
		sync_binlog=1 #每次写后立即同步二进制日志到磁盘,性能差
		#如果用到的为InnoDB存储引擎:
		innodb_flush_log_at_trx_commit=1 #每次事务提交立即同步日志写磁盘
		sync_master_info=# #次事件后master.info同步到磁盘
	在slave节点启用服务器选项:
		skip-slave-start=ON #不自动启动slave
	在slave节点启用参数:
		sync_relay_log=# #次写后同步relay log到磁盘
		sync_relay_log_info=# #次事务后同步relay-log.info到磁盘

实现主从复制

主服务:
1.修改主服务器配置文件,添加
[mysqld]
server-id=18
log-bin
[root@localhost ~]# systemctl restart mysqld.service
2.查看二进制文件位置
mysql> show master logs;
+----------------------+-----------+-----------+
| Log_name             | File_size | Encrypted |
+----------------------+-----------+-----------+
| localhost-bin.000001 |       156 | No        |
+----------------------+-----------+-----------+
1 row in set (0.00 sec

3.创建用于复制的用户
mysql> create user rep@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> grant replication slave on *.* to rep@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)

从服务器
1.修改配置文件
[mysqld]
server-id=28
read-only
[root@localhost ~]# systemctl restart mysqld.service
2.临时关闭二进制日志,并
mysql> set sql_log_bin=0;
mysql> change master to master_host='10.0.0.18',master_user='rep',master_password='123456',master_port=3306,master_log_file='ocalhost-bin.000002',master_log_pos=156;
mysql> start slave;
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.18
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: localhost-bin.000002
          Read_Master_Log_Pos: 975
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 1147
        Relay_Master_Log_File: localhost-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

#如果master服务器已经运行一段时间了,建议先将数据库备份,将数据还原到slave服务器,减轻同步时的压力,此方法也可用于新增slave服务器
[root@localhost data]# mysqldump -A -F --master-data=1 --single-transaction >all.sql
#修改备份文件,导入数据后不用再手动指定master服务器
[root@localhost data]# vim all.sql
CHANGE MASTER TO MASTER_HOST='10.0.0.18',MASTER_USER='rep',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='localhost-bin.000002',MASTER_LOG_POS=156;
#建议优化主和从节点服务器的性能
mysql> set global innodb_flush_log_at_trx_commit=2;
mysql> set global sync_binlog=0;

master宕机提升一个slave为master

1.查看slave状态,找到数据同步较快的从服务器
mysql> set global read_only=off;
Query OK, 0 rows affected (0.00 sec)

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> reset slave all;
Query OK, 0 rows affected, 1 warning (0.11 sec)

mysql> show master logs;
+---------------+-----------+-----------+
| Log_name      | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000004 |       156 | No        |
| binlog.000005 |       179 | No        |
| binlog.000006 |      1295 | No        |
+---------------+-----------+-----------+
3 rows in set (0.00 sec)
#上面临时修改,永久方法
[mysqld]
server-id=28
read-only=OFF
log-bin
[root@centos7 ~]# systemctl restart mysqld
2.在其他从服务器上
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> reset slave all;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host='10.0.0.28',master_user='rep',master_password='123456',master_log_file='binlog.000006',master_log_pos=1295;
Query OK, 0 rows affected, 8 warnings (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.28
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000006
          Read_Master_Log_Pos: 1295
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 321
        Relay_Master_Log_File: binlog.000006
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

级联复制

主服务器
[root@centos7 ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=18
log-bin
[root@centos7 ~]# systemctl restart mysqld
创建用于复制的用户
mysql> create user rep@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to rep@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)
mysql> show master logs;
+----------------------+-----------+-----------+
| Log_name             | File_size | Encrypted |
+----------------------+-----------+-----------+
| localhost-bin.000001 |       207 | No        |
| localhost-bin.000002 |       998 | No        |
| localhost-bin.000003 |       156 | No        |
+----------------------+-----------+-----------+

中间服务器
[root@centos7 ~]#vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=18
log-bin
read-only
log_slave_updates  #级联复制中间节点的必选项,MySQL8.0此为默认值,可以不要人为添加
[root@centos7 ~]# systemctl restart mysqld
mysql> change master to master_host='10.0.0.18',master_user='rep',master_password='123456',master_port=3306,master_log_file='localhost-bin.000003',master_log_pos=156;
Query OK, 0 rows affected, 9 warnings (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.18
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: localhost-bin.000003
          Read_Master_Log_Pos: 156
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 328
        Relay_Master_Log_File: localhost-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
mysql> show master logs;
+----------------------+-----------+-----------+
| Log_name             | File_size | Encrypted |
+----------------------+-----------+-----------+
| localhost-bin.000001 |       156 | No        |
+----------------------+-----------+-----------+
1 row in set (0.00 sec)
后端服务器
[root@centos7 ~]#vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=18
read-only
[root@centos7 ~]# systemctl restart mysqld
mysql> change master to master_host='10.0.0.28',master_user='rep',master_password='123456',master_port=3306,master_log_file='localhost-bin.000001',master_log_pos==156;
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.28
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: localhost-bin.000001
          Read_Master_Log_Pos: 156
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 328
        Relay_Master_Log_File: localhost-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

双主模式

双主模式,双方互为主从
实现方式:双方服务器各自将对方设置为主服务器,并开启二进制日志和中继日志
容易产生的问题:数据不一致;因此慎用
建议:定义自动增长id字段的数值范围各为奇偶
auto_increment_offset=1|2   #开始点
auto_increment_increment=2 #增长幅度
master1:
[mysqld]
server-id=18
log-bin
auto_increment_offset=1
auto_increment_increment=2
[root@centos7 ~]# systemctl restart mysqld
创建用于复制的用户
#先实现一个方向的主从,从服务器不需要在创建用户
mysql> create user rep@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to rep@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)
只想从服务器
mysql>  change master to master_host='10.0.0.28',master_user='rep',master_password='123456',master_port=3306,master_log_file='localhost-bin.000002',master_log_pos=156;
Query OK, 0 rows affected, 9 warnings (0.01 sec)
查看二进制日志位置
mysql> show master logs;
+----------------------+-----------+-----------+
| Log_name             | File_size | Encrypted |
+----------------------+-----------+-----------+
| localhost-bin.000001 |       207 | No        |
| localhost-bin.000002 |       998 | No        |
| localhost-bin.000003 |       179 | No        |
| localhost-bin.000004 |       156 | No        |
+----------------------+-----------+-----------+
4 rows in set (0.00 sec)
启动slave服务
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.28
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: localhost-bin.000002
          Read_Master_Log_Pos: 156
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 328
        Relay_Master_Log_File: localhost-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
master2:
修改配置
[mysqld]
server-id=28
log-bin
auto_increment_offset=2
auto_increment_increment=2
[root@centos7 ~]# systemctl restart mysqld
查看二进制文件位置
mysql> show master logs;
+----------------------+-----------+-----------+
| Log_name             | File_size | Encrypted |
+----------------------+-----------+-----------+
| localhost-bin.000001 |       179 | No        |
| localhost-bin.000002 |       156 | No        |
+----------------------+-----------+-----------+
2 rows in set (0.00 sec)
指向主服务器
mysql>  change master to master_host='10.0.0.18',master_user='rep',master_password='123456',master_port=3306,master_log_file='localhost-bin.000004',master_log_pos=156;
启动主从服务
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.18
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: localhost-bin.000004
          Read_Master_Log_Pos: 156
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 328
        Relay_Master_Log_File: localhost-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

同步,异步,半同步

同步服务

​ MySQL主服务器把二进制日志发送给从服务器,直到从服务器接受完毕并返回确认信息

​ 特点:保证所有从服务器和主服务器数据一致,效率低

异步复制

​ MySQL主服务器把二进制日志发送给从服务器,不确认从服务器是否接受完毕接受完毕,MySQL默认

​ 特点:不能保证主从数据完全一致,效率高

半同步复制

​ MySQL主服务器把二进制日志发送给从服务器,至少收到一个从服务器接受完毕确认信息

​ 特点:确保数据至少有一份完全备份

实现半同步复制

master:
安装插件:必选先安装在修改配置文件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
[root@localhost data]# cat /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=18
log-bin
rpl_semi_sync_master_enabled=ON
rpl_semi_sync_master_timeout=3000
[root@localhost ~]# systemctl restart mysqld

mysql> show global variables like '%semi%';
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 3000       |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.00 sec)
mysql> show global status like '%semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 0     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 0     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |
| Rpl_semi_sync_master_tx_wait_time          | 0     |
| Rpl_semi_sync_master_tx_waits              | 0     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 0     |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)



从服务器
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected, 1 warning (0.00 sec)

[root@localhost data]# cat /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=28
log-bin
rpl_semi_sync_slave_enabled=ON
[root@localhost ~]# systemctl restart mysqld

mysql> change master to master_host='10.0.0.18',master_user='rep',master_password='123456',master_port=3306,master_log_file='localhost-bin.000005',master_log_pos=156;
Query OK, 0 rows affected, 9 warnings (0.11 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.18
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: localhost-bin.000005
          Read_Master_Log_Pos: 156
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 328
        Relay_Master_Log_File: localhost-bin.000005
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
mysql> show global status like '%semi%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.00 sec)

#mariadb10上可用下面命令加载模块
plugin-load-add = semisync_master/semisync_slave

复制过滤器

让服务器只复制指定的库或表
两种实现方式:
(1) 服务器选项:主服务器仅向二进制日志中记录与特定数据库相关的事件
缺点:基于二进制还原将无法实现;不建议使用
优点: 只需要在主节点配置一次即可
注意:此项和 binlog_format相关
vim /etc/my.cnf
binlog-do-db=db1 #数据库白名单列表,不支持同时指定多个值,如果想实现多个数据库需多行实现
binlog-do-db=db2
binlog-ignore-db= #数据库黑名单列表

(2) 从服务器SQL_THREAD在relay log中的事件时,仅读取与特定数据库(特定表)相关的事件并应用于本地
缺点:会造成网络及磁盘IO浪费,在所有从节点都要配置
优点: 不影响二进制备份还原
从服务器上的复制过滤器相关变量
replicate_do_db="db1,db2,db3" #指定复制库的白名单,变量可以指定逗号分隔的多个值,选项不支持多值,只能分别写多行实现
replicate_ignore_db= #指定复制库黑名单
replicate_do_table= #指定复制表的白名单
replicate_ignore_table= #指定复制表的黑名单
replicate_wild_do_table= foo%.bar%  #支持通配符
replicate_wild_ignore_table=
注意:跨库的更新将无法同步

MySQL代理服务

Mycat实现MySQL读写分离

master服务器:
[mysqld]
server-id=28
log-bin

mysql> create user rep@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> grant replication slave on *.* to rep@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> create user root@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to root@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)

mysql> show master logs;
+-------------------+-----------+-----------+
| Log_name          | File_size | Encrypted |
+-------------------+-----------+-----------+
| master-bin.000001 |       179 | No        |
| master-bin.000002 |      1185 | No        |
+-------------------+-----------+-----------+
2 rows in set (0.00 sec

slave服务器:
[mysqld]
server-id=38
mysql> change master to master_host='10.0.0.28',master_user='rep',master_password='123456',master_log_file='master-bin.000002',master_log_pos=1185;
Query OK, 0 rows affected, 8 warnings (0.02 sec)


mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.0.28
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000002
          Read_Master_Log_Pos: 1185
               Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 325
        Relay_Master_Log_File: master-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

mycat服务器

yum -y install java
wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
mkdir /apps
tar xvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz -C /apps
[root@mycat ~]# vim /apps/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="hellodb" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="host1" url="10.0.0.28:3306" user="root"
                        password="123456">
                <readHost host="host2" url="10.0.0.38:3306" user="root"
                        password="123456" />
                </writeHost>
        </dataHost>

[root@mycat ~]# vim /apps/mycat/conf/server.xml
						<property name="serverPort">8066</property>
                        <property name="managerPort">9066</property>
                        <property name="idleTimeout">300000</property>
                        <property name="authTimeout">15000</property>
                        <property name="bindIp">0.0.0.0</property>
                        <property name="dataNodeIdleCheckPeriod">300000</property>
                        <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property>

测试:

[root@master ~]# tail -f /var/lib/mysql/master.log
...
2022-06-30T12:31:39.485856Z	    8 Query	select user()
2022-06-30T12:31:49.487452Z	    8 Query	select user()
2022-06-30T12:31:59.489016Z	    8 Query	select user()
2022-06-30T12:32:09.489389Z	    8 Query	select user()
2022-06-30T12:32:19.488688Z	    8 Query	select user()
2022-06-30T12:32:29.485331Z	    8 Query	select user()
2022-06-30T12:32:39.487071Z	    8 Query	select user()
2022-06-30T12:32:49.489086Z	    8 Query	select user()
2022-06-30T12:32:59.488414Z	    8 Query	select user()
2022-06-30T12:33:09.488277Z	    8 Query	select user()
2022-06-30T12:33:19.485627Z	    8 Query	select user()
2022-06-30T12:33:20.152683Z	    8 Query	insert teachers values(5,'wang',30,'M')

[root@slave ~]# tail -f /var/lib/mysql/slave.log 
2022-06-30T12:31:31.455364Z	    6 Connect Out	rep@10.0.0.28:3306
2022-06-30T12:31:40.092988Z	   10 Connect	root@10.0.0.18 on hellodb using TCP/IP
2022-06-30T12:31:40.093745Z	   10 Query	select user()
2022-06-30T12:31:50.036971Z	   10 Query	select user()
...
2022-06-30T12:34:19.882750Z	   11 Query	show tables
2022-06-30T12:34:20.035394Z	   12 Query	select user()
2022-06-30T12:34:30.037258Z	   13 Query	select user()
2022-06-30T12:34:40.033727Z	   10 Query	select user()
2022-06-30T12:34:50.038805Z	   11 Query	select user()
2022-06-30T12:35:00.034499Z	   12 Query	select user()
2022-06-30T12:35:00.139185Z	   13 Query	select * from teachers

从主从服务器日志中可以看到,数据写入master服务器,数据从slave服务器读取
posted @   ——浮生——  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示