实验环境:
1)主节点配置
Step1:安装数据库mysql8.0
1)主节点配置
Step1:安装数据库mysql8.0
Step2:创建存放二进制日志目录并设置相关权限
[root@master ~]# mkdir -p /data/mysql
[root@master ~]# chown mysql:mysql /data/mysql
Step3:修改配置文件
[root@master ~]# vim /etc/my.cnf
[mysqld]
server_id=80
log-bin=/data/mysql/mysql-bin
Step4:启动服务
[root@master ~]# systemctl enable --now mysqld
Step5:查询二进制日志位置
mysql> show master logs;
+------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 | 179 | No |
| mysql-bin.000002 | 156 | No |
+------------------+-----------+-----------+
2 rows in set (0.00 sec)
Step6:创建复制账号并授权
mysql> create user repluser@'10.0.101.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to repluser@'10.0.101.%';
Query OK, 0 rows affected (0.00 sec)
2)从节点配置
Step1:安装mysql8.0
[root@slave ~]# dnf -y install mysql-server
Step2:创建存放二进制日志目录并设置相关权限
[root@slave ~]# mkdir -p /data/mysql
[root@slave ~]# chown mysql:mysql /data/mysql
Step3:修改配置文件
[root@slave ~]# vim /etc/my.cnf
[mysqld]
server_id=81
log-bin=/data/mysql/mysql-bin
read-only
Step4:启动服务
[root@slave ~]# systemctl enable --now mysqld
Step5:设置CHANGE MASTER TO操作
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.0.101.80',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='123456',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_LOG_POS=156;
Query OK, 0 rows affected, 9 warnings (0.02 sec)
Step6:启动复制线程
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
Step7:查看线程信息
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: 10.0.101.80
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 685
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 853
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 685
Relay_Log_Space: 1062
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 80
Master_UUID: 8dd69111-5e2b-11ec-b941-000c2953dccd
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set, 1 warning (0.00 sec)
3)测试
Step1:在主节点上创建数据库
mysql> create database db1;
Query OK, 1 row affected (0.01 sec)
Step2:在从节点上查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db1 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
实验环境:
1)主节点1配置
Step1:安装数据库mysql8.0
[root@master1 ~]# dnf -y install mysql-server
Step2:创建存放二进制日志目录并设置相关权限
[root@master1 ~]# mkdir -p /data/mysql
[root@master1 ~]# chown mysql:mysql /data/mysql
Step3:修改配置文件
[root@master1 ~]# vim /etc/my.cnf
[mysqld]
server_id=80
log-bin=/data/mysql/mysql-bin
Step4:启动服务
[root@master1 ~]# systemctl enable --now mysqld
Step5:查看二进制日志位置
mysql> show master logs;
+------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 | 179 | No |
| mysql-bin.000002 | 156 | No |
+------------------+-----------+-----------+
2 rows in set (0.00 sec)
Step6:创建复制账号并授权
mysql> create user repluser@'10.0.101.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to repluser@'10.0.101.%';
Query OK, 0 rows affected (0.01 sec)
2)主节点2配置
Step1:安装数据库mysql8.0
[root@master2 ~]# dnf -y install mysql-server
Step2:创建存放二进制日志目录并设置相关权限
[root@master2 ~]# mkdir -p /data/mysql
[root@master2 ~]# chown mysql:mysql /data/mysql
Step3:修改配置文件
[root@master2 ~]# vim /etc/my.cnf
[mysqld]
server_id=81
log-bin=/data/mysql/mysql-bin
Step4:启动服务
[root@master2 ~]# systemctl enable --now mysqld
Step5:设置CHANGE MASTER TO操作
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.0.101.80',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='123456',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_CONNECT_RETRY=156;
Query OK, 0 rows affected, 10 warnings (0.01 sec)
Step6:启动复制线程
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Step7:查看线程状态
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: 10.0.101.80
Master_User: repluser
Master_Port: 3306
Connect_Retry: 156
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 685
Relay_Log_File: master2-relay-bin.000002
Relay_Log_Pos: 900
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 685
Relay_Log_Space: 1111
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 80
Master_UUID: d432619c-5ef1-11ec-9741-000c2953dccd
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set, 1 warning (0.00 sec)
3)主节点1上配置
Step1:查看主节点2上二进制日志位置
mysql> show master logs;
+------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 | 179 | No |
| mysql-bin.000002 | 156 | No |
+------------------+-----------+-----------+
2 rows in set (0.00 sec)
Step2:设置CHANGE MASTER TO操作
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.0.101.81',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='123456',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_CONNECT_RETRY=156;
Query OK, 0 rows affected, 10 warnings (0.02 sec)
Step3:启动复制线程
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Step4:查看线程状态
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: 10.0.101.81
Master_User: repluser
Master_Port: 3306
Connect_Retry: 156
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 1076
Relay_Log_File: master1-relay-bin.000002
Relay_Log_Pos: 556
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1076
Relay_Log_Space: 767
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 81
Master_UUID: f425a744-5ef3-11ec-b54b-000c29fc0e53
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set, 1 warning (0.00 sec)
4)测试双向复制数据
Step1:在主节点1上创建数据库
mysql> create database db80;
Query OK, 1 row affected (0.00 sec)
Step2:在主节点2上查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db80 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
Step3:在主节点2上创建数据库
mysql> create database db81;
Query OK, 1 row affected (0.00 sec)
Step4:在主节点1上查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db80 |
| db81 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
实验环境:
10.0.101.80 backup
10.0.101.81 restore
实验步骤:
1、备份
step1:安装数据库8.0
[root@backup ~]# dnf -y install mysql-server
step2:创建存放二进制日志文件目录
[root@backup ~]# mkdir -p /data/mysql
[root@backup ~]# chown mysql.mysql /data/mysql
step3:编辑配置文件
[root@backup ~]# vim /etc/my.cnf
[mysqld]
log-bin=/data/mysql/mysql-bin
skip_name_resolve=1
step4:启动mysql服务
[root@backup ~]# systemctl enable --now mysqld
step5:下载xtrabackup工具
[root@backup ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.26-18/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm
[root@backup ~]# ls
percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm
step6:安装xtrabackup工具
[root@backup ~]# dnf -y localinstall percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm
step4:创建备份目录
[root@backup ~]# mkdir /backup
step5:导入测试数据库
[root@backup ~]# mysql < hellodb_innodb.sql
step6:完全备份
[root@backup ~]# xtrabackup --uroot --backup --target-dir=/backup/base
[root@backup ~]# ll /backup/base
total 69684
-rw-r----- 1 root root 475 Dec 18 16:04 backup-my.cnf
drwxr-x— 2 root root 132 Dec 18 16:04 hellodb
-rw-r----- 1 root root 5943 Dec 18 16:04 ib_buffer_pool
-rw-r----- 1 root root 12582912 Dec 18 16:04 ibdata1
drwxr-x— 2 root root 143 Dec 18 16:04 mysql
-rw-r----- 1 root root 156 Dec 18 16:04 mysql-bin.000003
-rw-r----- 1 root root 29 Dec 18 16:04 mysql-bin.index
-rw-r----- 1 root root 25165824 Dec 18 16:04 mysql.ibd
drwxr-x— 2 root root 8192 Dec 18 16:04 performance_schema
drwxr-x— 2 root root 28 Dec 18 16:04 sys
-rw-r----- 1 root root 16777216 Dec 18 16:04 undo_001
-rw-r----- 1 root root 16777216 Dec 18 16:04 undo_002
-rw-r----- 1 root root 21 Dec 18 16:04 xtrabackup_binlog_info
-rw-r----- 1 root root 102 Dec 18 16:04 xtrabackup_checkpoints
-rw-r----- 1 root root 462 Dec 18 16:04 xtrabackup_info
-rw-r----- 1 root root 2560 Dec 18 16:04 xtrabackup_logfile
-rw-r----- 1 root root 39 Dec 18 16:04 xtrabackup_tablespaces
step7:登录mysql实例,第一次插入表记录
[root@backup ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.26 Source distribution
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use hellodb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> insert teachers values (null,'Tom',18,'M'),(null,'Jerry',19,'M');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 93 | F |
| 5 | Tom | 18 | M |
| 6 | Jerry | 19 | M |
+-----+---------------+-----+--------+
6 rows in set (0.00 sec)
step8:第一次增量备份
[root@backup ~]# xtrabackup -uroot --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base
step9:第二次插入表记录
mysql> insert teachers values (null,'Liulaoban',28,'M'),(null,'Lilaoban',32,'M');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 93 | F |
| 5 | Tom | 18 | M |
| 6 | Jerry | 19 | M |
| 7 | Liulaoban | 28 | M |
| 8 | Lilaoban | 32 | M |
+-----+---------------+-----+--------+
8 rows in set (0.00 sec)
step10:第二次增量备份
[root@backup ~]# xtrabackup -uroot --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1
step11:第三次插入表记录
mysql> insert teachers values (null,'wangcai',12,'M'),(null,'xiaoqing',10,'M');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
step12:备份二进制日志文件
[root@backup ~]# mysqlbinlog /data/mysql/mysql-bin.000005 -v
# The proper term is pseudo_replica_mode, but we use this compatibility alias
# to make the statement usable on server versions 8.0.24 and older.
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#211218 16:44:47 server id 1 end_log_pos 125 CRC32 0x31a3a26a Start: binlog v 4, server v 8.0.26 created 211218 16:44:47
BINLOG '
f5+9YQ8BAAAAeQAAAH0AAAAAAAQAOC4wLjI2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEwANAAgAAAAABAAEAAAAYQAEGggAAAAICAgCAAAACgoKKioAEjQA
CigBaqKjMQ==
'/*!*/;
# at 125
#211218 16:44:47 server id 1 end_log_pos 156 CRC32 0xc3aac3ac Previous-GTIDs
# [empty]
# at 156
#211218 16:50:32 server id 1 end_log_pos 235 CRC32 0xc9feb8b6 Anonymous_GTID last_committed=0 sequence_number=1 rbr_only=yes original_committed_timestamp=1639817432819300 immediate_commit_timestamp=1639817432819300 transaction_length=319
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
# original_commit_timestamp=1639817432819300 (2021-12-18 16:50:32.819300 CST)
# immediate_commit_timestamp=1639817432819300 (2021-12-18 16:50:32.819300 CST)
/*!80001 SET @@session.original_commit_timestamp=1639817432819300*//*!*/;
/*!80014 SET @@session.original_server_version=80026*//*!*/;
/*!80014 SET @@session.immediate_server_version=80026*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 235
#211218 16:50:32 server id 1 end_log_pos 313 CRC32 0x475984ed Query thread_id=20 exec_time=0 error_code=0
SET TIMESTAMP=1639817432/*!*/;
SET @@session.pseudo_thread_id=20/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1168113696/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=255/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
/*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;
BEGIN
/*!*/;
# at 313
#211218 16:50:32 server id 1 end_log_pos 380 CRC32 0xbedda021 Table_map: `hellodb`.`teachers` mapped to number 129
# at 380
#211218 16:50:32 server id 1 end_log_pos 444 CRC32 0x8a4a6ab1 Write_rows: table id 129 flags: STMT_END_F
BINLOG '
2KC9YRMBAAAAQwAAAHwBAAAAAIEAAAAAAAEAB2hlbGxvZGIACHRlYWNoZXJzAAQCDwH+BCwB9wEI
AQHAAgEhIaDdvg==
2KC9YR4BAAAAQAAAALwBAAAAAIEAAAAAAAEAAgAE/wAJAAcAd2FuZ2NhaQwCAAoACAB4aWFvcWlu
ZwoCsWpKig==
'/*!*/;
### INSERT INTO `hellodb`.`teachers`
### SET
### @1=9
### @2='wangcai'
### @3=12
### @4=2
### INSERT INTO `hellodb`.`teachers`
### SET
### @1=10
### @2='xiaoqing'
### @3=10
### @4=2
# at 444
#211218 16:50:32 server id 1 end_log_pos 475 CRC32 0x784d2c9c Xid = 231
COMMIT/*!*/;
# at 475
#211218 16:51:38 server id 1 end_log_pos 498 CRC32 0x82f35e16 Stop
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
2、还原
step13:备份文件传至还原服务器
[root@backup ~]# du -sh /backup/*
71M /backup/base
2.3M /backup/inc1
2.2M /backup/inc2
[root@backup ~]# scp -r /backup 10.0.101.81:/
[root@restore ~]# du -sh /backup/*
71M /backup/base
2.3M /backup/inc1
2.2M /backup/inc2
[root@backup ~]# scp /data/binlog.sql 10.0.101.81:/data
[root@restore ~]# ll /data/
-rw-r--r-- 1 root root 2949 Dec 18 17:39 /data/binlog.sql
step14:安装mysql8.0(安装完成后先不要启动mysql服务)
[root@restore ~]# dnf -y install mysql-server
step15:下载并安装xtrabackup
[root@restore ~]# ls
percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm
[root@restore ~]# dnf -y localinstall percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm
step16:还原完全备份,需阻止回滚未完成的事务
[root@restore ~]# xtrabackup --prepare --apply-log-only --target-dir=/backup/base
step17:合并第一次增量备份,需阻止回滚未完成的事务
[root@restore ~]# xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1
step18:合并第二次增量备份,不需阻止回滚未完成的事务
[root@restore ~]# xtrabackup --prepare --target-dir=/backup/base --incremental-dir=/backup/inc2
[root@restore ~]# du -sh /backup/*
187M /backup/base
11M /backup/inc1
11M /backup/inc2
step19:复制到数据库目录,注意数据库目录必须为空,MySQL服务不能启动
[root@restore ~]# ll /var/lib/mysql/
total 0
[root@restore ~]# xtrabackup --copy-back --target-dir=/backup/base
[root@restore ~]# ll /var/lib/mysql/
total 180260
drwxr-x--- 2 root root 132 Dec 18 17:17 hellodb
-rw-r----- 1 root root 5943 Dec 18 17:17 ib_buffer_pool
-rw-r----- 1 root root 12582912 Dec 18 17:17 ibdata1
-rw-r----- 1 root root 50331648 Dec 18 17:17 ib_logfile0
-rw-r----- 1 root root 50331648 Dec 18 17:17 ib_logfile1
-rw-r----- 1 root root 12582912 Dec 18 17:17 ibtmp1
drwxr-x--- 2 root root 143 Dec 18 17:17 mysql
-rw-r----- 1 root root 156 Dec 18 17:17 mysql-bin.000005
-rw-r----- 1 root root 17 Dec 18 17:17 mysql-bin.index
-rw-r----- 1 root root 25165824 Dec 18 17:17 mysql.ibd
drwxr-x--- 2 root root 8192 Dec 18 17:17 performance_schema
drwxr-x--- 2 root root 28 Dec 18 17:17 sys
-rw-r----- 1 root root 16777216 Dec 18 17:17 undo_001
-rw-r----- 1 root root 16777216 Dec 18 17:17 undo_002
-rw-r----- 1 root root 503 Dec 18 17:17 xtrabackup_info
-rw-r----- 1 root root 1 Dec 18 17:17 xtrabackup_master_key_id
step20:还原目录属性
[root@restore ~]# chown -R mysql:mysql /var/lib/mysql
[root@restore ~]# ll /var/lib/mysql/
total 180260
drwxr-x--- 2 mysql mysql 132 Dec 18 17:17 hellodb
-rw-r----- 1 mysql mysql 5943 Dec 18 17:17 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Dec 18 17:17 ibdata1
-rw-r----- 1 mysql mysql 50331648 Dec 18 17:17 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Dec 18 17:17 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Dec 18 17:17 ibtmp1
drwxr-x--- 2 mysql mysql 143 Dec 18 17:17 mysql
-rw-r----- 1 mysql mysql 156 Dec 18 17:17 mysql-bin.000005
-rw-r----- 1 mysql mysql 17 Dec 18 17:17 mysql-bin.index
-rw-r----- 1 mysql mysql 25165824 Dec 18 17:17 mysql.ibd
drwxr-x--- 2 mysql mysql 8192 Dec 18 17:17 performance_schema
drwxr-x--- 2 mysql mysql 28 Dec 18 17:17 sys
-rw-r----- 1 mysql mysql 16777216 Dec 18 17:17 undo_001
-rw-r----- 1 mysql mysql 16777216 Dec 18 17:17 undo_002
-rw-r----- 1 mysql mysql 503 Dec 18 17:17 xtrabackup_info
-rw-r----- 1 mysql mysql 1 Dec 18 17:17 xtrabackup_master_key_id
step21:启动mysql服务
[root@restore ~]# systemctl start mysqld
step22:查看表中记录
[root@restore ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26 Source distribution
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use hellodb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 93 | F |
| 5 | Tom | 18 | M |
| 6 | Jerry | 19 | M |
| 7 | Liulaoban | 28 | M |
| 8 | Lilaoban | 32 | M |
+-----+---------------+-----+--------+
8 rows in set (0.01 sec)
# 以上查询可知,恢复了完全备份,第一次增量备份,第二次增量备份的数据,第三次插入的表记录还未还原!
step23:通过二进制日志备份还原第三次插入的表记录
[root@restore ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.26 Source distribution
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use hellodb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> source /data/binlog.sql
Query OK, 0 rows affected, 1 warning (0.00 sec)
# 查看表记录
mysql> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 93 | F |
| 5 | Tom | 18 | M |
| 6 | Jerry | 19 | M |
| 7 | Liulaoban | 28 | M |
| 8 | Lilaoban | 32 | M |
| 9 | wangcai | 12 | M |
| 10 | xiaoqing | 10 | M |
+-----+---------------+-----+--------+
10 rows in set (0.00 sec)
# 以上查询得知,第三次插入的表记录已还原成功!
实验环境:
实验步骤:
一、配置主节点
step1:安装mysql8.0
[root@master ~]# dnf -y install mysql-server
step2:创建存放二进制日志目录并设置相关权限
[root@master ~]# mkdir -p /data/mysql
[root@master ~]# chown mysql.mysql /data/mysql
step3:编辑配置文件
[root@master ~]# vim /etc/my.cnf
[mysqld]
server_id=81
log-bin=/data/mysql/mysql-bin
step4:启动服务
[root@master ~]# systemctl enable --now mysqld
step5:查询二进制日志位置
mysql> show master logs;
+------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 | 179 | No |
| mysql-bin.000002 | 156 | No |
+------------------+-----------+-----------+
2 rows in set (0.00 sec)
step6:创建复制账号并授权
mysql> create user repluser@'10.0.101.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant replication slave on *.* to repluser@'10.0.101.%';
Query OK, 0 rows affected (0.00 sec)
二、配置从节点
step7:安装mysql8.0
[root@slave ~]# dnf -y install mysql-server
step8:编辑配置文件
[root@slave ~]# vim /etc/my.cnf
[mysqld]
server_id=82
read_only
step9:启动服务
[root@slave ~]# systemctl enable --now mysqld
step10:设置change master to
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.0.101.81',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='123456',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_LOG_POS=156;
Query OK, 0 rows affected, 9 warnings (0.01 sec)
step11:启动复制线程并查看线程状态
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.101.81
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 685
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 853
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 685
Relay_Log_Space: 1062
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 81
Master_UUID: 7f7ca1b4-5f3f-11ec-89d6-000c29fc0e53
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set, 1 warning (0.01 sec)
三、MyCat配置
step12:下载Mycat
[root@mycat ~]# wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
step13:安装java
[root@mycat ~]# dnf -y install java
step14:创建mycat安装目录并解压之
[root@mycat ~]# mkdir /apps
[root@mycat ~]# tar xf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz -C /apps/
step15:配置mycat环境变量
[root@mycat ~]# echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.sh
[root@mycat ~]# source /etc/profile.d/mycat.sh
# 查看PATH变量
[root@mycat ~]# echo $PATH
/apps/mycat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
step16:启动mycat
[root@mycat ~]# mycat start
Starting Mycat-server...
# 查看端口号,mycat启动后默认开启8066端口号
[root@mycat ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 127.0.0.1:32000 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 50 *:43967 *:*
LISTEN 0 50 *:1984 *:*
LISTEN 0 128 *:8066 *:*
LISTEN 0 50 *:43655 *:*
LISTEN 0 128 *:9066 *:*
step17:客户机mycat连接测试
mycat连接,root密码默认为123456
# 需提前安装mariadb包
[root@client ~]# mysql
bash: mysql: command not found
[root@client ~]# yum -y install mariadb
[root@client ~]# mysql -uroot -p123456 -h 10.0.101.80 -P8066
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.29-mycat-1.6.7.6-release-20210303094759 MyCat Server (OpenCloudDB)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.01 sec)
step18:在mycat服务器上修改server.xml文件配置mycat的连接信息
# 修改配置文件前先备份文件
[root@mycat ~]# cp -a /apps/mycat/conf/server.xml{,.bak}
# 修改默认连接的端口号
[root@mycat ~]# vim /apps/mycat/conf/server.xml
# 取消多行注释,并将多代码以外的内容删除掉!
<property name="serverPort">3306</property> # 将8066修改成3306
<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密码
<user name="root" defaultAccount="true">
<property name="password">lxf202112</property> # 将root密码123456修改成你设置的密码!
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
step19:修改schema.xml实现读写分离策略
# 修改前备份文件
[root@mycat ~]# cp -a /apps/mycat/conf/schema.xml{,.bak}
[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" /> # 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.101.81:3306" user="root" password="123456">
<readHost host="host2" url="10.0.101.82:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
step20:重启mycat
[root@mycat ~]# mycat restart
Stopping Mycat-server...
Stopped Mycat-server.
Starting Mycat-server...
# 查看端口号,看端口号由默认的8066改成的3306了!
[root@mycat ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 127.0.0.1:32000 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 50 *:1984 *:*
LISTEN 0 50 *:38405 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 *:9066 *:*
LISTEN 0 50 *:34705 *:*
# 查看日志文件
[root@mycat ~]# cat /apps/mycat/logs/wrapper.log
STATUS | wrapper | 2021/12/17 22:00:56 | --> Wrapper Started as Daemon
STATUS | wrapper | 2021/12/17 22:00:57 | Launching a JVM...
INFO | jvm 1 | 2021/12/17 22:00:59 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2021/12/17 22:00:59 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2021/12/17 22:00:59 |
INFO | jvm 1 | 2021/12/17 22:01:03 | MyCAT Server startup successfully. see logs in logs/mycat.log
STATUS | wrapper | 2021/12/17 22:20:36 | TERM trapped. Shutting down.
STATUS | wrapper | 2021/12/17 22:20:37 | <-- Wrapper Stopped
STATUS | wrapper | 2021/12/17 22:20:38 | --> Wrapper Started as Daemon
STATUS | wrapper | 2021/12/17 22:20:38 | Launching a JVM...
INFO | jvm 1 | 2021/12/17 22:20:38 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2021/12/17 22:20:38 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2021/12/17 22:20:38 |
INFO | jvm 1 | 2021/12/17 22:20:40 | MyCAT Server startup successfully. see logs in logs/mycat.log
四、配置主节点
step21:创建用户并对mycat授权
mysql> create user root@'10.0.101.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to root@'10.0.101.%';
Query OK, 0 rows affected (0.01 sec)
# 导入hellodb数据库,用于连接测试
[root@master ~]# mysql < hellodb_innodb.sql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| hellodb |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
五、客户端连接mycat测试
step22:连接mycat
[root@client ~]# mysql -uroot -plxf202112 -h 10.0.101.80
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6.7.6-release-20210303094759 MyCat Server (OpenCloudDB)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.00 sec)
MySQL [(none)]> use TESTDB;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [TESTDB]> show tables;
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes |
| coc |
| courses |
| scores |
| students |
| teachers |
| toc |
+-------------------+
7 rows in set (0.00 sec)
# 主、从节点开启通用日志功能
[root@master ~]# vim /etc/my.cnf
[mysqld]
... 省略 ...
general_log=ON
[root@master ~]# systemctl restart mysqld
[root@slave ~]# vim /etc/my.cnf
[mysqld]
... 省略 ...
general_log=ON
[root@slave ~]# systemctl restart mysqld
# 追踪主、从节点日志文件内容
[root@master ~]# tail -f /var/lib/mysql/master.log
2021-12-17T14:42:00.383118Z 8 Query select user()
2021-12-17T14:42:10.381681Z 8 Query select user()
2021-12-17T14:42:20.386943Z 8 Query select user()
2021-12-17T14:42:30.386941Z 8 Query select user()
2021-12-17T14:42:40.380085Z 8 Query select user()
2021-12-17T14:42:50.383267Z 8 Query select user()
2021-12-17T14:43:00.381240Z 8 Query select user()
2021-12-17T14:43:10.384048Z 8 Query select user()
2021-12-17T14:43:20.380846Z 8 Query select user()
2021-12-17T14:43:30.380322Z 8 Query select user()
2021-12-17T14:43:40.384513Z 8 Query select user()
[root@slave ~]# tail -f /var/lib/mysql/slave.log
2021-12-17T14:41:50.379586Z 10 Query select user()
2021-12-17T14:41:52.249581Z 11 Query show slave status
2021-12-17T14:42:00.380862Z 10 Query select user()
2021-12-17T14:42:10.379873Z 10 Query select user()
2021-12-17T14:42:20.384383Z 10 Query select user()
2021-12-17T14:42:30.384358Z 10 Query select user()
2021-12-17T14:42:40.378179Z 10 Query select user()
2021-12-17T14:42:47.410867Z 11 Quit
2021-12-17T14:42:50.381016Z 10 Query select user()
2021-12-17T14:43:00.379478Z 10 Query select user()
2021-12-17T14:43:10.382273Z 10 Query select user()
# 模拟写操作
MySQL [TESTDB]> update teachers set age=@@server_id where tid=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 在主节点追踪到的通用日志内容
[root@master ~]# tail -f /var/lib/mysql/master.log
2021-12-17T14:46:50.384393Z 19 Query select user()
2021-12-17T14:47:00.381770Z 17 Query select user()
2021-12-17T14:47:10.380365Z 16 Query select user()
2021-12-17T14:47:20.380762Z 18 Query select user()
2021-12-17T14:47:30.383507Z 19 Query select user()
2021-12-17T14:47:40.384174Z 17 Query select user()
2021-12-17T14:47:50.381108Z 16 Query select user()
2021-12-17T14:48:00.381279Z 18 Query select user()
2021-12-17T14:48:10.381279Z 19 Query select user()
2021-12-17T14:48:20.383007Z 17 Query select user()
2021-12-17T14:48:30.382309Z 16 Query select user()
2021-12-17T14:48:30.565188Z 18 Query SET names utf8;
2021-12-17T14:48:30.565351Z 18 Query update teachers set age=@@server_id where tid=3
2021-12-17T14:48:40.382341Z 19 Query select user()
# 在从节点上追踪到的通用日志内容
[root@slave ~]# tail -f /var/lib/mysql/slave.log
2021-12-17T14:47:00.379767Z 12 Query select user()
2021-12-17T14:47:10.378547Z 10 Query select user()
2021-12-17T14:47:18.852492Z 13 Query SET names utf8;
2021-12-17T14:47:18.852622Z 13 Query select * from teachers
2021-12-17T14:47:20.378815Z 14 Query select user()
2021-12-17T14:47:30.381648Z 12 Query select user()
2021-12-17T14:47:40.381775Z 10 Query select user()
2021-12-17T14:47:50.379564Z 13 Query select user()
2021-12-17T14:48:00.379204Z 14 Query select user()
2021-12-17T14:48:10.379280Z 12 Query select user()
2021-12-17T14:48:20.381217Z 10 Query select user()
2021-12-17T14:48:30.380608Z 13 Query select user()
2021-12-17T14:48:30.566677Z 6 Query BEGIN
2021-12-17T14:48:30.566892Z 6 Query COMMIT /* implicit, from Xid_log_event */
2021-12-17T14:48:40.380266Z 14 Query select user()
2021-12-17T14:48:50.379932Z 12 Query select user()
# 模拟读操作
MySQL [TESTDB]> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 81 | F |
+-----+---------------+-----+--------+
4 rows in set (0.01 sec)
# 在主节点追踪到的通用日志内容
[root@master ~]# tail -f /var/lib/mysql/master.log
2021-12-17T14:45:40.385326Z 17 Connect [email protected] on hellodb using TCP/IP
2021-12-17T14:45:40.386172Z 19 Connect [email protected] on hellodb using TCP/IP
2021-12-17T14:45:50.381685Z 16 Query select user()
2021-12-17T14:46:00.379779Z 18 Query select user()
2021-12-17T14:46:10.382271Z 19 Query select user()
2021-12-17T14:46:20.386919Z 17 Query select user()
2021-12-17T14:46:30.379789Z 16 Query select user()
2021-12-17T14:46:40.383109Z 18 Query select user()
2021-12-17T14:46:50.384393Z 19 Query select user()
2021-12-17T14:47:00.381770Z 17 Query select user()
2021-12-17T14:47:10.380365Z 16 Query select user()
2021-12-17T14:47:20.380762Z 18 Query select user()
2021-12-17T14:47:30.383507Z 19 Query select user()
2021-12-17T14:47:40.384174Z 17 Query select user()
# 在从节点上追踪到的通用日志内容
[root@slave ~]# tail -f /var/lib/mysql/slave.log
2021-12-17T14:45:40.384271Z 14 Connect [email protected] on hellodb using TCP/IP
2021-12-17T14:45:40.383870Z 12 Connect [email protected] on hellodb using TCP/IP
2021-12-17T14:45:50.379768Z 10 Query select user()
2021-12-17T14:46:00.377769Z 13 Query select user()
2021-12-17T14:46:10.380287Z 14 Query select user()
2021-12-17T14:46:20.385343Z 12 Query select user()
2021-12-17T14:46:30.377758Z 10 Query select user()
2021-12-17T14:46:40.381074Z 13 Query select user()
2021-12-17T14:46:50.382213Z 14 Query select user()
2021-12-17T14:47:00.379767Z 12 Query select user()
2021-12-17T14:47:10.378547Z 10 Query select user()
2021-12-17T14:47:18.852492Z 13 Query SET names utf8;
2021-12-17T14:47:18.852622Z 13 Query select * from teachers
2021-12-17T14:47:20.378815Z 14 Query select user()
2021-12-17T14:47:30.381648Z 12 Query select user()
2021-12-17T14:47:40.381775Z 10 Query select user()
2021-12-17T14:47:50.379564Z 13 Query select user()
1)command模块:远程主机执行命令,默认模块
2)shell模块:增强版command模块,支持各种符号,如:重定向、管道等
3)script模块:在远程主机上运行ansible主控端上的脚本(脚本无需执行权限)
4)copy模块:从ansible主控端复制文件到被控端主机
5)get_url模块:用于将文件从互联网下载到被控端主机
6)fetch模块:从被控端提取文件至ansible主控端,不支持目录
7)file模块:设置文件属性、创建软链接等
8)stat模块:检查文件或文件系统的状态
9)unarchive模块:解包解压缩
10)archive模块:打包压缩保存在被控端
11)hostname模块:管理主机名,建议针对单个主机进行设置
12)cron模块:用于计划任务
13)yum和apt模块:用于管理RedHat和Debian系软件包
14)service模块:用于管理服务
15)user模块:用于管理用户
16)group模块:用于管理组
17)lineinfile模块:用于修改某个文件内容
替换文本时,如果有多行匹配到,则只有最后一行内容被替换
删除文件时,如果有多行匹配到,则匹配到的行全部删除
18)replace模块:类似于sed命令,主要也是基于正则进行匹配和替换
19)selinux模块:管理selinux策略
20)reboot模块:管理主机重启
21)mount模块:用于管理挂载和卸载文件系统
22)setup模块:用于收集主机的系统信息
23)debug模块:用于输出信息,并且通过msg定制输出的信息内容