上篇文章介绍了MariaDB数据库的备份工具及实现的几种方法,这次介绍MariaDB数据库的复制,首选介绍什么是mysql的复制?
一、复制概述
1.1、复制可以解决什么问题?
数据复制技术有以下一些特点:
(1) 数据分布
(2) 负载平衡(load balancing),只针对读操作
(3) 数据库的备份
(4) 高可用性(high availability)和容错
1.2、复制如何进行
(1) master将数据库的改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件);
(2) slave通过I/O线程将master的binary log events拷贝到它的中继日志(relay log);
(3) slave再通过SQL线程replay中继日志中的事件,将改变保存至自己的数据文件中。
二、通过以下几个模型进行介绍:
2.1、主从
2.2、主主
2.3、半同步复制
2.4、基于ssl的复制
测试环境: centos 7自带的mariadb-server;
master:172.16.116.231 ;slave:172.16.116.232
2.1、主从复制
①主从配置过程: master: (1) 启动二进制日志; [mysqld] log_bin=mysql-bin 2) 为当前节点设置一个全局唯一的server_id号; [mysqld] server_id=1 (3) 创建有复制权限的用户账号; REPLICATION SLAVE, REPLICATION CLIENT |
从节点: (1) 启动中继日志; [mysqld] relay_log=relay-log (2) 为当前节点设置一个全局惟的ID号; [mysqld] server_id=11 (3) 使用有复制权限的用户账号连接至主服务器,并启动复制线程; mysql> CHANGE MASTER TO ~~ mysql> START SLAVE [IO_THREAD|SQL_THREAD]; |
②实现过程如下:
master:172.16.11.231
# yum install -y mariadb-server //master/slave节点安装MySQL数据库[root@node1 ~]# vim /etc/my.cnflog_bin=mysql-bin //开启二进制server_id=1innodb_file_per_table=1skip_name_resolve=1sslMariaDB [(none)]> grant replication slave,replication client on *.* to 'copy'@'172.16.116.232' identified by 'passwd'; //用户授权Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show master status; //查看使用二进制日志文件的位置+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 | 494 | | | +------------------+----------+--------------+------------------+ MariaDB [(none)]> create database testdb; //测试从服务器是否可以复制Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> show master status; +------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 | 581 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)
slave:172.16.11.232
# yum install -y mariadb-server //master/slave节点安装MySQL数据库[root@node2 ~]# vim /etc/my.cnfrelay_log=relay-log //开启中继日志server_id=11 //id号innodb_file_per_table=1 //innodb存储引擎每表一个表空间skip_name_resolve=1 //跳过名称反解ssl //启用sslMariaDB [(none)]> change master to master_host='172.16.116.231',master_user='copy',master_password='passwd',master_log_file='mysql-bin.000003',master_log_pos=494;Query OK, 0 rows affected (0.02 sec)MariaDB [(none)]> start slave; //启动复制线程Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Master_Host: 172.16.116.231 Master_User: copy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 494 Relay_Log_File: relay-log.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000003 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: 494 Relay_Log_Space: 245 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: NULLMaster_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: 01 row in set (0.00 sec)MariaDB [(none)]> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.16.116.231 Master_User: copy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 581 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 616 Relay_Master_Log_File: mysql-bin.000003 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: 581 Relay_Log_Space: 904 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: 0Master_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: 11 row in set (0.00 sec)MariaDB [(none)]> show databases; //复制没问题+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || test || testdb |+--------------------+5 rows in set (0.01 sec)
2.2、主主复制;互为主从
① 配置过程 |
(1)各节点设置一个全局唯一的server_id号 (2)各节点都启用log_bin 和relay_log (3)创建有复制权限的用户账号 REPLICATION SLAVE ; REPLICATION CLIENT (4)定义自动增长id字段的数值范围为奇偶 配置一个节点使用奇数id auto_increment_offset=1 auto_increment_increment=2 另一个节点使用偶数id auto_increment_offset=2 auto_increment_increment=2 (5)均把对方指定为主节点,并启动复制线程 |
② 实现过程如下
master:172.16.116.231
[root@node1 ~]# vim /etc/my.cnflog_bin=mysql-bin //开启二进制日志relay_log=relay-log //开启中继日志server_id=1 //id号 innodb_file_per_table=1 //innodb存储引擎每表一个表空间skip_name_resolve=1 //跳过名称反解sslauto_increment_offset=1 //自动增长id段使用奇数auto_increment_increment=2MariaDB [(none)]> grant replication slave,replication client on *.* to 'copy'@'172.16.116.232' identified by 'passwd'; Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 | 504 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)MariaDB [(none)]> change master to master_host='172.16.116.232',master_user='copy',master_password='passwd',master_log_file='mysql-bin.000003',master_log_pos=504;Query OK, 0 rows affected (0.38 sec)MariaDB [(none)]> start slave; //启动复制线程Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> create database testdb; //测试,创建新的数据库Query OK, 1 row affected (0.00 sec)//在172.16.116.231的MySQL数据库中查看是否存在表及其表中数据MariaDB [(none)]> select * from testdb.student;+----+-------+| id | name |+----+-------+| 2 | tom || 4 | jerry |+----+-------+2 rows in set (0.00 sec)//存在,同样新增2条数据MariaDB [(none)]> insert into testdb.student(name) value ('blue'),('red');Query OK, 2 rows affected (0.00 sec)Records: 2 Duplicates: 0 Warnings: 0
slave:172.16.116.232
[root@node2 ~]# vim /etc/my.cnflog_bin=mysql-binrelay_log=relay-logserver_id=11innodb_file_per_table=1skip_name_resolve=1sslauto_increment_offset=2auto_increment_increment=2MariaDB [(none)]> grant replication slave,replication client on *.* to 'copy'@'172.16.116.231' identified by 'passwd';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 | 504 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)MariaDB [(none)]> change master to master_host='172.16.116.231',master_user='copy',master_password='passwd',master_log_file='mysql-bin.000003',master_log_pos=504;Query OK, 0 rows affected (0.04 sec)MariaDB [(none)]> start slave; //启动复制线程Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show databases; //查看是否同步成功,可以看到有testdb数据库+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || test || testdb |+--------------------+5 rows in set (0.00 sec)//在172.16.116.232的MySQL数据库中创建表student并插入2条数据MariaDB [(none)]> use testdb;Database changedMariaDB [testdb]> create table student(id int unsigned not null auto_increment primary key,name char(20) not null);Query OK, 0 rows affected (0.37 sec)MariaDB [testdb]> insert into student(name) value ('tom'),('jerry');Query OK, 2 rows affected (0.01 sec)Records: 2 Duplicates: 0 Warnings: 0//可以看到下表中的数据,同步没问题!!MariaDB [testdb]> select * from testdb.student;+----+-------+| id | name |+----+-------+| 2 | tom || 4 | jerry || 5 | blue || 7 | red |+----+-------+4 rows in set (0.00 sec)
2.3、半同步复制
① 配置过程:
实现半同步复制的功能很简单,只需在mysql的主服务器和从服务器上安装个google提供的插件即可实现,master上使用semisync_master.so,slave上使用semisync_slave.so插件即可实现,插件在mysql通用二进制的mysql/lib/plugin目录内;rpm包安装的 /usr/lib64/mysql/plugin/目录内。
注:在从服务器开启半同步的时候,建立数据库很快;关闭从服务器的I/O线程的时候,主服务器创建数据库的时候会等待,当超过超时时间的时候才会创建;一旦超时,会自动降级为异步,再次执行操作不会等待
// 主服务器上需要安装的插件 MariaDB [(none)]> install plugin rpl_semi_sync_master soname 'semisync_master.so';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show global variables like '%semi%';+------------------------------------+-------+| Variable_name | Value |+------------------------------------+-------+| rpl_semi_sync_master_enabled | OFF || rpl_semi_sync_master_timeout | 10000 || rpl_semi_sync_master_trace_level | 32 || rpl_semi_sync_master_wait_no_slave | ON |+------------------------------------+-------+//从服务器上需要安装的插件MariaDB [(none)]> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show global variables like '%semi%';
②其配置步骤如下;主从复制模型测试~~
master:
[root@node1 ~]# vim /etc/my.cnflog_bin=mysql-bin //开启二进制日志server_id=1innodb_file_per_table=1skip_name_resolve=1rpl_semi_sync_master_enabled=1 //开启半同步复制; 配置完成重启mariadb服务rpl_semi_sync_master_timeout=5000 //设置复制的超时时间,单位为毫秒,超过这个时长,会自动降级为异步复制 MariaDB [(none)]> show global variables like '%semi%';+------------------------------------+-------+| Variable_name | Value |+------------------------------------+-------+| rpl_semi_sync_master_enabled | ON || rpl_semi_sync_master_timeout | 5000 || rpl_semi_sync_master_trace_level | 32 || rpl_semi_sync_master_wait_no_slave | ON |+------------------------------------+-------+4 rows in set (0.00 sec) MariaDB [(none)]> grant replication slave,replication client on *.* to 'copy'@'172.16.116.232' identified by 'passwd'; //授权Query OK, 0 rows affected (5.01 sec)MariaDB [(none)]> show master status; //查看二进制日志的事件位置 +------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000004 | 419 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)
slave:
[root@node2 ~]# vim /etc/my.cnfrelay_log=relay-logserver_id=11innodb_file_per_table=1skip_name_resolve=1rpl_semi_sync_slave_enabled=1 //开启半同步复制 ; 配置完成重启mariadb服务MariaDB [(none)]> show global variables like '%semi%';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| rpl_semi_sync_slave_enabled | ON || rpl_semi_sync_slave_trace_level | 32 |+---------------------------------+-------+2 rows in set (0.00 sec)MariaDB [(none)]> change master to master_host='172.16.116.231',master_user='copy',master_password='passwd',master_log_file='mysql-bin.000004',master_log_pos=419; Query OK, 0 rows affected (0.02 sec)MariaDB [(none)]> start slave;//启动复制线程,看到上图显示Rpl_semi_sync_master_clients=1 Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.16.116.231 Master_User: copy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 419 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 529 Relay_Master_Log_File: mysql-bin.000004 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: 419 Relay_Log_Space: 817 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: 0Master_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: 11 row in set (0.00 sec)
测试过程如下~~~
master上创建新的数据库;创建test1的时候很快的速度就完成了;在创建test2之前,关闭slave的io_thread,可以看到创建test2会有延迟,到达设定的值5m的时候(rpl_semi_sync_master_timeout=5000)才会创建完成;但是再创建test3的时候会很快完成,说明确实降级为异步复制了MariaDB [(none)]> create database test1;Query OK, 1 row affected (0.00 sec) //在slave上执行 stop slave io_thread;MariaDB [(none)]> create database test2; Query OK, 1 row affected (5.00 sec) //看到延迟为5mMariaDB [(none)]> create database test3;Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> show global status like '%semi%';+--------------------------------------------+-------+| Variable_name | Value |+--------------------------------------------+-------+| Rpl_semi_sync_master_clients | 0 | //客户端为0| Rpl_semi_sync_master_net_avg_wait_time | 17088 || Rpl_semi_sync_master_net_wait_time | 85444 || Rpl_semi_sync_master_net_waits | 5 || Rpl_semi_sync_master_no_times | 3 || Rpl_semi_sync_master_no_tx | 4 || Rpl_semi_sync_master_status | OFF || Rpl_semi_sync_master_timefunc_failures | 0 || Rpl_semi_sync_master_tx_avg_wait_time | 697 || Rpl_semi_sync_master_tx_wait_time | 1394 || Rpl_semi_sync_master_tx_waits | 2 || Rpl_semi_sync_master_wait_pos_backtraverse | 0 || Rpl_semi_sync_master_wait_sessions | 0 || Rpl_semi_sync_master_yes_tx | 2 |+--------------------------------------------+-------+14 rows in set (0.00 sec)
2.4、基于ssl实现主从复制
mariadb数据复制是明文的,为了加强数据内容安全性,基于ssl实现对复制内容的加密。
实现过程:
2.4.1、创建CA,并自签证书
# echo 01 > /etc/pki/CA/serial# touch /etc/pki/CA/index.txt# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:BeijingLocality Name (eg, city) [Default City]:BeijingOrganization Name (eg, company) [Default Company Ltd]:mariadbOrganizational Unit Name (eg, section) []:itCommon Name (eg, your name or your server's hostname) []:CA Email Address []:ca@haha.com //为主服务器(172.16.116.231)颁发证书#openssl ca -in master.csr -out master.crt -days 365//为从服务器(172.16.116.232)颁发证书;#openssl ca -in slave.csr -out slave.crt -days 365
2.4.2、主服务器(172.16.116.231)申请证书;
# hostname master[root@master ~]# mkdir /etc/mysql/ssl[root@master ~]# (umask 077;openssl genrsa -out /etc/mysql/ssl/master.key 2048)Generating RSA private key, 2048 bit long modulus.....................................................................+++...................+++e is 65537 (0x10001)[root@master ~]# openssl req -new -key /etc/mysql/ssl/master.key -out /etc/mysql/ssl/master.csrCountry Name (2 letter code) [XX]:CNState or Province Name (full name) []:BeijingLocality Name (eg, city) [Default City]:BeijingOrganization Name (eg, company) [Default Company Ltd]:mariadbOrganizational Unit Name (eg, section) []:itCommon Name (eg, your name or your server's hostname) []:masterEmail Address []:master@haha.comPlease enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:
2.4.3、为从服务器(172.16.116.232)颁发证书;
# hostname slave[root@slave ~]# mkdir /etc/mysql/ssl[root@slave ~]# (umask 077;openssl genrsa -out /etc/mysql/ssl/slave.key 2048)Generating RSA private key, 2048 bit long modulus.+++...+++e is 65537 (0x10001)[root@slave ~]# openssl req -new -key /etc/mysql/ssl/slave.key -out /etc/mysql/ssl/slave.csrCountry Name (2 letter code) [XX]:CNState or Province Name (full name) []:BeijingLocality Name (eg, city) [Default City]:Beijing Organization Name (eg, company) [Default Company Ltd]:mariadbOrganizational Unit Name (eg, section) []:itCommon Name (eg, your name or your server's hostname) []:slaveEmail Address []:slave@haha.comPlease enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:
2.4.4、修改CA证书权限及mysql的配置文件;将CA证书的公钥cacert.pem复制到主从服务器中
master
[root@master ~]# cp cacert.pem /etc/mysql/ssl/[root@master ~]# cd /etc/mysql/ssl/[root@master ssl]# chown -R mysql.mysql ./*[root@master ssl]# chmod 600 ./* [root@master ~]# vim /etc/my.cnflog_bin=mysql-logserver_id=1innodb_file_per_table=1skip_name_resolve=1sslssl_ca=/etc/mysql/ssl/cacert.pemssl_cert=/etc/mysql/ssl/master.crtssl_key=/etc/mysql/ssl/master.key
slave
[root@slave ~]# cp cacert.pem /etc/mysql/ssl/[root@slave ~]# cd /etc/mysql/ssl/[root@slave ssl]# chown -R mysql.mysql ./*[root@slave ssl]# chmod 600 ./*[root@slave ssl]# lltotal 16-rw------- 1 mysql mysql 1367 Nov 7 20:19 cacert.pem-rw------- 1 mysql mysql 4544 Nov 7 20:17 slave.crt-rw------- 1 mysql mysql 1675 Nov 7 20:14 slave.key[root@slave ssl]# vim /etc/my.cnfrelay_log=relay-logserver_id=11innodb_file_per_table=1skip_name_resolve=1sslssl_ca=/etc/mysql/ssl/cacert.pemssl_cert=/etc/mysql/ssl/slave.crtssl_key=/etc/mysql/ssl/slave.key
2.4.5、启动mysql服务;授权用户;测试复制是否加密
master
MariaDB [(none)]> show global variables like '%ssl%';+---------------+------------------------------+| Variable_name | Value |+---------------+------------------------------+| have_openssl | YES || have_ssl | YES || ssl_ca | /etc/mysql/ssl/cacert.pem || ssl_capath | || ssl_cert | /etc/mysql/ssl/master.crt || ssl_cipher | || ssl_key | /etc/mysql/ssl/master.key |+---------------+------------------------------+7 rows in set (0.00 sec)MariaDB [(none)]> grant replication slave,replication client on *.* to 'copy'@'172.16.116.232' identified by 'passwd' require ssl; //授权Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.01 sec)MariaDB [(none)]> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-log.000003 | 506 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)测试~~~MariaDB [(none)]> create database testdb;Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-log.000003 | 779 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)
slave
MariaDB [(none)]> show global variables like '%ssl%';+---------------+---------------------------+| Variable_name | Value |+---------------+---------------------------+| have_openssl | YES || have_ssl | YES || ssl_ca | /etc/mysql/ssl/cacert.pem || ssl_capath | || ssl_cert | /etc/mysql/ssl/slave.crt || ssl_cipher | || ssl_key | /etc/mysql/ssl/slave.key |+---------------+---------------------------+7 rows in set (0.00 sec)MariaDB [(none)]> change master to master_host='172.16.116.231',master_user='copy',master_password='sql-log.000003',master_log_pos=506,master_ssl=1,master_ssl_ca='/etc/mysql/ssl/cacert.pem',master_ssl.crt',master_ssl_key='/etc/mysql/ssl/slave.key'; Query OK, 0 rows affected (0.02 sec)MariaDB [(none)]> start slave;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> change master to master_host='172.16.116.231',master_user='copy',master_password='sql-log.000003',master_log_pos=506,master_ssl=1,master_ssl_ca='/etc/mysql/ssl/cacert.pem',master_ssl.crt',master_ssl_key='/etc/mysql/ssl/slave.key';Query OK, 0 rows affected (0.02 sec)MariaDB [(none)]> start slave;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.16.116.231 Master_User: copy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-log.000003 Read_Master_Log_Pos: 506 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 529 Relay_Master_Log_File: mysql-log.000003 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: 506 Relay_Log_Space: 817 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysql/ssl/cacert.pem Master_SSL_CA_Path: Master_SSL_Cert: /etc/mysql/ssl/slave.crt Master_SSL_Cipher: Master_SSL_Key: /etc/mysql/ssl/slave.key Seconds_Behind_Master: 0Master_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: 11 row in set (0.00 sec)//查看测试的结果;复制成功!~~MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || test || testdb |+--------------------+5 rows in set (0.00 sec)MariaDB [(none)]> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.16.116.231 Master_User: copy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-log.000003 Read_Master_Log_Pos: 779 //复制的位置是779 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 802 Relay_Master_Log_File: mysql-log.000003 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: 779 Relay_Log_Space: 1090 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysql/ssl/cacert.pem Master_SSL_CA_Path: Master_SSL_Cert: /etc/mysql/ssl/slave.crt Master_SSL_Cipher: Master_SSL_Key: /etc/mysql/ssl/slave.key Seconds_Behind_Master: 0Master_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: 11 row in set (0.00 sec)
至此,MariaDB数据库的复制的几种模型介绍完毕! O(∩_∩)O 谢谢~~~