成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > MySQL系列之十三 MySQL的復制

MySQL系列之十三 MySQL的復制

熱門標簽:外東北地圖標注 高清地圖標注道路 400電話可以辦理嗎 臨清電話機器人 大眾點評星級酒店地圖標注 話務外呼系統(tǒng)怎么樣 拉卡拉外呼系統(tǒng) 智能外呼系統(tǒng)復位 云南電商智能外呼系統(tǒng)價格

一、MySQL復制相關概念

  • 主從復制:主節(jié)點將數(shù)據(jù)同步到多個從節(jié)點
  • 級聯(lián)復制:主節(jié)點將數(shù)據(jù)同步到一個從節(jié)點,其他的從節(jié)點在向從節(jié)點復制數(shù)據(jù)
  • 同步復制:將數(shù)據(jù)從主節(jié)點全部同步到從節(jié)點時才返回給用戶的復制策略叫同步復制
  • 異步復制:只要數(shù)據(jù)寫入到主節(jié)點就立即返回給用戶同步完成
  • 讀寫分離:在前端加一個調(diào)度器,負責將改變數(shù)據(jù)的語句和查詢數(shù)據(jù)的語句分開調(diào)度,把寫操作調(diào)度到主節(jié)點,讀操作調(diào)度到從節(jié)點

主節(jié)點:

  • dump Thread:為每個Slave的I/O Thread啟動一個dump線程,用于向其發(fā)送binary log events

從節(jié)點:

  • I/O Thread:向Master請求二進制日志事件,并保存于中繼日志中
  • SQL Thread:從中繼日志中讀取日志事件,在本地完成重放

跟復制功能相關的文件:

  • master.info:用于保存slave連接至master時的相關信息,例如賬號、密碼、服務器地址等
  • relay-log.info:保存在當前slave節(jié)點上已經(jīng)復制的當前二進制日志和本地replay log日志的對應關系

復制架構:

  • 一主一從
  • 一主多從
  • 主主復制
  • 環(huán)狀復制
  • 級聯(lián)復制
  • 多主一從

常見的架構有主從架構或者級聯(lián)架構

二、簡單的一主一從架構實現(xiàn)

1、新數(shù)據(jù)庫搭建主從架構

​1)主服務器配置

~]# vim /etc/my.cnf
    [mysqld]
    log_bin
    binlog_format=ROW
    log-basename=master1
    server_id=1
~]# systemctl restart mariadb
~]# mysql
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO testuser@'192.168.0.8' IDENTIFIED BY 'testpass';  #授權同步賬戶
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| master1-bin.000001 |     26756 |
| master1-bin.000002 |    921736 |
| master1-bin.000003 |       401 |  #記錄此位置,從服務器從這里開始同步
+--------------------+-----------+

​2)從服務器配置

~]# vim /etc/my.cnf
    [mysqld]
    server_id=2  #服務器ID唯一
    relay_log=relay-log
    relay_log_index=relay-log.index
    read_only=ON
~]# systemctl restart mariadb
~]# mysql
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',  #指定主節(jié)點IP
    -> MASTER_USER='testuser',  #同步用戶的用戶名
    -> MASTER_PASSWORD='testpass',  #密碼
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='master1-bin.000003',  #以上記錄的文件
    -> MASTER_LOG_POS=401,  #位置
    -> MASTER_CONNECT_RETRY=10;  #重試時間10秒
MariaDB [(none)]> START SLAVE;  #開始主從復制

​3)測試

在主節(jié)點上生成一些數(shù)據(jù):
MariaDB [(none)]> CREATE DATABASE testdb;
MariaDB [(none)]> use testdb
MariaDB [testdb]> create table testlog (id int auto_increment primary key,name char(30),age int default 20);
MariaDB [testdb]> delimiter $$
MariaDB [testdb]> create procedure pro_testlog()
    -> begin
    -> declare i int;
    -> set i = 1;
    -> while i  100000
    -> do insert into testlog(name,age) values (concat('testuser',i),i);
    -> set i = i +1; 
    -> end while;
    -> end$$
MariaDB [testdb]> delimiter ;
MariaDB [testdb]> START TRANSACTION;
MariaDB [testdb]> CALL pro_testlog;
MariaDB [testdb]> COMMIT;
在從節(jié)點上查看同步情況:
MariaDB [(none)]> SELECT COUNT(*) FROM testdb.testlog;
+----------+
| COUNT(*) |
+----------+
|    99999 |  #同步成功
+----------+
MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ****************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.7
                  Master_User: testuser
                  Master_Port: 3306
                Connect_Retry: 10
              Master_Log_File: master1-bin.000003
          Read_Master_Log_Pos: 10389814
               Relay_Log_File: relay-log.000002
                Relay_Log_Pos: 10389944
        Relay_Master_Log_File: master1-bin.000003
             Slave_IO_Running: Yes  #IO線程已啟動
            Slave_SQL_Running: Yes  #SQL線程已啟動
        Seconds_Behind_Master: 0    #主從復制的時間差
             Master_Server_Id: 1

2、舊數(shù)據(jù)庫新加從服務器

​1)主服務器配置

~]# vim /etc/my.cnf
    [mysqld]
    log_bin
    binlog_format=ROW
    log-basename=master1
    server_id=1
~]# systemctl restart mariadb
~]# mysqldump -A -F --single-transaction --master-data=1 > full.sql
~]# scp full.sql root@192.168.0.8:/root/
~]# mysql -e 'GRANT REPLICATION SLAVE ON *.* TO testuser@'192.168.0.8' IDENTIFIED BY 'testpass';'

​2)從服務器配置

~]# vim /etc/my.cnf
    [mysqld]
    server_id=2
    relay_log=relay-log   
    relay_log_index=relay-log.index
    read_only=ON
~]# systemctl restart mariadb
~]# vim full.sql  #在備份的SQL文件中加入以下信息
    CHANGE MASTER TO
    MASTER_HOST='192.168.0.7',
    MASTER_USER='testuser',
    MASTER_PASSWORD='testpass',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='master1-bin.000005',
    MASTER_LOG_POS=245,
    MASTER_CONNECT_RETRY=10;
~]# mysql  full.sql  #導入SQL的同時配置已經(jīng)完成
MariaDB [(none)]> SELECT COUNT(*) FROM testdb.testlog;
+----------+
| COUNT(*) |
+----------+
|    99999 |
+----------+
MariaDB [(none)]> START SLAVE;  #啟動復制

三、級聯(lián)復制架構實現(xiàn)

1)主節(jié)點

[root@master ~]# vim /etc/my.cnf
[mysqld]
log_bin
binlog_format=ROW
log-basename=master
server_id=1
[root@master ~]# systemctl restart mariadb
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';
MariaDB [(none)]> SHOW MASTER LOGS;
+-------------------+-----------+
| Log_name          | File_size |
+-------------------+-----------+
| master-bin.000001 |     26753 |
| master-bin.000002 |    921736 |
| master-bin.000003 |       401 |
+-------------------+-----------+

2)從節(jié)點

[root@slave1 ~]# vim /etc/my.cnf
[mysqld]
log_bin  #注意,級聯(lián)架構中中繼從節(jié)點一定得開二進制日志功能
binlog_format=ROW
read_only=ON
server_id=2
log_slave_updates  #這項為關鍵,作用是將從服務的數(shù)據(jù)改變記錄到二進制日志文件中
relay_log=relay-log
relay_log_index=relay-log.index
[root@slave1 ~]# systemctl start mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='master-bin.000003',
    -> MASTER_LOG_POS=401,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       245 |
+--------------------+-----------+
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';

3)從節(jié)點的從節(jié)點

[root@slave2 ~]# vim /etc/my.cnf
[mysqld]
read_only=ON
server_id=3
relay_log=relay-log
relay_log_index=relay-log.index
[root@slave2 ~]# systemctl start mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.8',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mariadb-bin.000001',
    -> MASTER_LOG_POS=245,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;

4)從節(jié)點的從節(jié)點2

[root@slave3 ~]# vim /etc/my.cnf
[mysqld]
read_only=ON
server_id=4
relay_log=relay-log
relay_log_index=relay-log.index
[root@slave3 ~]# systemctl start mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.8',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mariadb-bin.000001',
    -> MASTER_LOG_POS=245,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;
到此已經(jīng)搭建好了級聯(lián)復制,接下來測試一下把~

四、主主復制架構

容易產(chǎn)生的問題:數(shù)據(jù)不一致,因此慎用;考慮要點:自動增長id
配置一個節(jié)點使用奇數(shù)id
auto_increment_offset=1 開始點
auto_increment_increment=2 增長幅度
另一個節(jié)點使用偶數(shù)id
auto_increment_offset=2
auto_increment_increment=2

1)主1

[mysqld]
log_bin
binlog_format=ROW
log-basename=master1
server_id=1
relay_log=relay-log
relay_log_index=relay-log.index
auto_increment_offset=1  #自增長字段從1開始
auto_increment_increment=2  #每次增長2,也就是說master1節(jié)點寫入的數(shù)據(jù)的id字段全部是奇數(shù)
[root@master ~]# systemctl start mariadb
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| master1-bin.000001 |     27033 |
| master1-bin.000002 |    942126 |
| master1-bin.000003 |       245 |
+--------------------+-----------+
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.8',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='master2-bin.000003',
    -> MASTER_LOG_POS=245,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;

2)主2

[mysqld]
log_bin
binlog_format=ROW
log-basename=master2
server_id=2
relay_log=relay-log
relay_log_index=relay-log.index
auto_increment_offset=2  #自增長字段從1開始
auto_increment_increment=2  #每次增長2,也就是說master1節(jié)點寫入的數(shù)據(jù)的id字段全部是偶數(shù)
[root@master2 ~]# systemctl start mariadb
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| master2-bin.000001 |     27036 |
| master2-bin.000002 |    942126 |
| master2-bin.000003 |       245 |
+--------------------+-----------+
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='master1-bin.000003',
    -> MASTER_LOG_POS=245,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;

3)測試

在master1上創(chuàng)建表,增加數(shù)據(jù)
MariaDB [(none)]> CREATE DATABASE db1;
MariaDB [(none)]> use db1
MariaDB [db1]> CREATE TABLE t1(id INT(2) AUTO_INCREMENT PRIMARY KEY,name CHAR(30));
MariaDB [db1]> INSERT t1(name) VALUES ('tom');
MariaDB [db1]> INSERT t1(name) VALUES ('maria'); 
MariaDB [db1]> SELECT * FROM t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | tom   |
|  3 | maria |
+----+-------+
在master2上增加數(shù)據(jù)
MariaDB [db1]> INSERT t1(name) VALUES ('jerry');
MariaDB [db1]> INSERT t1(name) VALUES ('tony'); 
MariaDB [db1]> SELECT * FROM t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | tom   |
|  3 | maria |
|  4 | jerry |
|  6 | tony  |

五、半同步復制的實現(xiàn)

​默認情況下,MySQL的復制功能是異步的,異步復制可以提供最佳的性能,主庫把binlog日志發(fā)送給從庫即結束,并不驗證從庫是否接收完畢。這意味著當主服務器或從服務器端發(fā)生故障時,有可能從服務器沒有接收到主服務器發(fā)送過來的binlog日志,這就會造成主服務器和從服務器的數(shù)據(jù)不一致,甚至在恢復時造成數(shù)據(jù)的丟失;半同步復制的機制是只有當主節(jié)點和從節(jié)點同步完成,僅有一臺同步完成即可,返回寫入完成,這樣的機制保證了數(shù)據(jù)的安全性。

1)主節(jié)點

[root@master ~]# vim /etc/my.cnf
[mysqld]
log_bin
binlog_format=ROW
log-basename=master
server_id=1
relay_log=relay-log
relay_log_index=relay-log.index
[root@master ~]# systemctl restart mariadb
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';
MariaDB [(none)]> SHOW MASTER LOGS;
+-------------------+-----------+
| Log_name          | File_size |
+-------------------+-----------+
| master-bin.000001 |     26753 |
| master-bin.000002 |    921736 |
| master-bin.000003 |       401 |
+-------------------+-----------+
MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';  #安裝模塊
MariaDB [(none)]> SET GLOBAL rpl_semi_sync_master_enabled=1;  #開啟半同步功能
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |  #已開啟
| rpl_semi_sync_master_timeout       | 10000 |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+
MariaDB [(none)]> 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     |
+--------------------------------------------+-------+

2)從節(jié)點1

[root@slave1 ~]# vim /etc/my.cnf
[mysqld]
read_only=ON
log_bin
binlog_format=ROW
log-basename=slave
server_id=2
relay_log=relay-log
relay_log_index=relay-log.index
[root@slave1 ~]# systemctl restart mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='master-bin.000003',
    -> MASTER_LOG_POS=401,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
MariaDB [(none)]> SET GLOBAL rpl_semi_sync_slave_enabled=1;
MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW MASTER LOGS;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| slave-bin.000001 |     26753 |
| slave-bin.000002 |    921736 |
| slave-bin.000003 |       245 |
+------------------+-----------+
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';

3)從節(jié)點2

[root@slave2 ~]# vim /etc/my.cnf
[mysqld]
read_only=ON
server_id=3
relay_log=relay-log
relay_log_index=relay-log.index
[root@slave2 ~]# systemctl restart mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.8',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='slave-bin.000003',
    -> MASTER_LOG_POS=245,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;

4)從節(jié)點3

[root@slave3 ~]# vim /etc/my.cnf
[mysqld]
read_only=ON
server_id=4
relay_log=relay-log
relay_log_index=relay-log.index
[root@slave3 ~]# systemctl restart mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.8',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='slave-bin.000003',
    -> MASTER_LOG_POS=245,
    -> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;

六、加密傳輸復制的實現(xiàn)

在默認的主從復制過程或遠程連接到MySQL/MariaDB所有的鏈接通信中的數(shù)據(jù)都是明文的,外網(wǎng)里訪問數(shù)據(jù)或則復制,存在安全隱患。通過SSL/TLS加密的方式進行復制的方法,來進一步提高數(shù)據(jù)的安全性

主服務器開啟SSL:[mysqld] 加一行ssl
主服務器配置證書和私鑰;并且創(chuàng)建一個要求必須使用SSL連接的復制賬號
從服務器使用CHANGER MASTER TO 命令時指明ssl相關選項

MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_key       |          |
+---------------+----------+

特別提示:在配置之前先檢查mysql服務是否支持ssl功能,如果have_ssl的值為'DISABLED'則支持;如果為'NO'則不支持,需要再重新編譯安裝或者安裝具有ssl功能的版本

1)CA

[root@CA ~]# mkdir /etc/my.cnf.d/ssl/
[root@CA ~]# cd /etc/my.cnf.d/ssl/
[root@CA ssl]# openssl genrsa 2048 > cakey.pem
[root@CA ssl]# openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650 #自簽證書
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:beijing
    Locality Name (eg, city) [Default City]:beijing
    Organization Name (eg, company) [Default Company Ltd]:testmysqlca 
    Organizational Unit Name (eg, section) []:opt
    Common Name (eg, your name or your server's hostname) []:ca.testmysqlca.com

[root@CA ssl]# openssl req -newkey rsa:2048 -days 365 -nodes -keyout master.key > master.csr
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:beijing
    Locality Name (eg, city) [Default City]:beijing
    Organization Name (eg, company) [Default Company Ltd]:testmysqlca
    Organizational Unit Name (eg, section) []:opt
    Common Name (eg, your name or your server's hostname) []:master.testmysqlca.com
[root@CA ssl]# openssl x509 -req -in master.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > master.crt #簽署master證書

[root@CA ssl]# openssl req -newkey rsa:2048 -days 365 -nodes -keyout slave.key > slave.csr
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:beijing
    Locality Name (eg, city) [Default City]:beijing
    Organization Name (eg, company) [Default Company Ltd]:testmysqlca 
    Organizational Unit Name (eg, section) []:opt
    Common Name (eg, your name or your server's hostname) []:slave.testmysqlca.com
[root@CA ssl]# openssl x509 -req -in slave.csr -CA cacert.pem -CAkey cakey.pem -set_serial 02 > slave.crt #簽署slave證書

[root@CA ssl]# openssl req -newkey rsa:2048 -days 365 -nodes -keyout slave2.key > slave2.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:testmysqlca
Organizational Unit Name (eg, section) []:opt
Common Name (eg, your name or your server's hostname) []:slave2.testmysqlca.com
[root@CA ssl]# openssl x509 -req -in slave2.csr -CA cacert.pem -CAkey cakey.pem -set_serial 03 > slave2.crt #簽署slave2證書

[root@CA ssl]# openssl verify -CAfile cacert.pem master.crt slave.crt slave2.crt #檢查證書是否可用
master.crt: OK
slave.crt: OK
slave2.crt: OK
先在各個節(jié)點上創(chuàng)建/etc/my.cnf.d/ssl/文件夾,將各自的證書,CA的證書和各自的秘鑰文件復制過去
[root@CA ssl]# scp cacert.pem master.crt master.key root@192.168.0.7:/etc/my.cnf.d/ssl/
[root@CA ssl]# scp cacert.pem slave.crt slave.key root@192.168.0.8:/etc/my.cnf.d/ssl/ 
[root@CA ssl]# scp cacert.pem slave2.crt slave2.key root@192.168.0.9:/etc/my.cnf.d/ssl/

2)master

[root@master ~]# mkdir /etc/my.cnf.d/ssl/
[root@master ~]# vim /etc/my.cnf
[mysqld]
log_bin
binlog_format=ROW
log-basename=master
server_id=1
ssl #開啟ssl功能
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem #指定CA證書的路徑
ssl-cert=/etc/my.cnf.d/ssl/master.crt #指定自己的證書的路徑
ssl-key=/etc/my.cnf.d/ssl/master.key #指定自己的秘鑰文件路徑
[root@master ~]# systemctl restart mariadb
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass' REQUIRE SSL; #授權用戶并且強制迫使用戶開啟ssl登錄
MariaDB [(none)]> SHOW MASTER LOGS;
+-------------------+-----------+
| Log_name          | File_size |
+-------------------+-----------+
| master-bin.000001 |     26753 |
| master-bin.000002 |    921736 |
| master-bin.000003 |       413 |
+-------------------+-----------+

3)slave1

[root@slave1 ~]# mkdir /etc/my.cnf.d/ssl/
[root@slave1 ~]# mysql -urepluser -preplpass -h192.168.0.7 --ssl-ca=/etc/my.cnf.d/ssl/cacert.pem --ssl-cert=/etc/my.cnf.d/ssl/slave.crt --ssl-key=/etc/my.cnf.d/ssl/slave.key
[root@slave1 ~]# vim /etc/my.cnf
[mysqld]
read_only=ON
server_id=2
relay_log=relay-log
relay_log_index=relay-log.index
ssl
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
ssl-cert=/etc/my.cnf.d/ssl/slave.crt
ssl-key=/etc/my.cnf.d/ssl/slave.key
[root@slave1 ~]# systemctl restart mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='master-bin.000003',
    -> MASTER_LOG_POS=413,
    -> MASTER_CONNECT_RETRY=10,
    -> MASTER_SSL=1;  #注意,需要指明開啟ssl鏈接
MariaDB [(none)]> START SLAVE;

4)slave2

[root@slave2 ~]# mkdir /etc/my.cnf.d/ssl/
[root@slave2 ~]# mysql -urepluser -preplpass -h192.168.0.7 --ssl-ca=/etc/my.cnf.d/ssl/cacert.pem --ssl-cert=/etc/my.cnf.d/ssl/slave2.crt --ssl-key=/etc/my.cnf.d/ssl/slave2.key
[root@slave2 ~]# vim /etc/my.cnf
[mysqld]
read_only=ON
server_id=3
relay_log=relay-log
relay_log_index=relay-log.index
ssl
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
ssl-cert=/etc/my.cnf.d/ssl/slave2.crt
ssl-key=/etc/my.cnf.d/ssl/slave2.key
[root@slave2 ~]# systemctl restart mariadb
MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.7',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='master-bin.000003',
    -> MASTER_LOG_POS=413,
    -> MASTER_CONNECT_RETRY=10,
    -> MASTER_SSL=1;
MariaDB [(none)]> START SLAVE;

七、MySQL復制的相關指令和變量總結

選項:

  • log_bin 啟用二進制日志,在主節(jié)點或級聯(lián)復制中間的從節(jié)點必須要開啟
  • binlog_format=ROW 二進制日志記錄方式為基于行的方式記錄,強烈建議開啟
  • log-basename=master | slave ... 二進制日志的前綴名,不是必須向,但建議標識
  • server_id = # 服務器ID,各個節(jié)點的ID必須唯一
  • relay_log = relay-log 開啟中繼日志,并以relay-log為文件名開頭,從節(jié)點開啟
  • relay_log_index = relay-log.index 中繼日志索引文件
  • log_slave_updates 作用是SQL線程重讀中繼日志時將改變數(shù)據(jù)的操作記錄為二進制日志,在級聯(lián)復制中使用
  • ssl 開啟ssl功能
    • ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
    • ssl-cert=/etc/my.cnf.d/ssl/master.crt
    • ssl-key=/etc/my.cnf.d/ssl/master.key
  • sync_binlog=1 每次寫后立即同步二進制日志到磁盤
    • innodb_flush_log_at_trx_commit=1 每次事務提交立即同步日志寫磁盤
    • sync_master_info=# #次事件后master.info同步到磁盤
  • skip_slave_start=ON 不自動啟動slave
  • sync_relay_log=# #次寫后同步relay log到磁盤
  • sync_relay_log_info=# #次事務后同步relay-log.info到磁盤
  • auto_increment_offset=1 自動增長開始點,在主主復制中使用

變量:

  • replicate_do_db= 指定復制庫的白名單
  • replicate_ignore_db= 指定復制庫黑名單
  • replicate_do_table= 指定復制表的白名單
  • replicate_ignore_table= 指定復制表的黑名單
  • replicate_wild_do_table= foo%.bar% 支持通配符
  • replicate_wild_ignore_table= 指定復制的表,黑名單
  • rpl_semi_sync_slave_enabled=1 開啟半同步復制,需要安裝模塊

指令:

  • START SLAVE; 啟動主從復制
  • STOP SLAVE; 停止復制
  • SHOW SLAVE STATUS; 查看復制狀態(tài)
    • Seconds_Behind_Master: 0 從服務器是否落后于主服務
  • RESET SLAVE ALL; 重置從服務器的配置
  • MASTER_SSL=1, 配合 CHANGE MASTER TO 使用,開啟ssl加密復制
    • MASTER_SSL_CA = '/etc/my.cnf.d/ssl/cacert.pem',
    • MASTER_SSL_CERT = '/etc/my.cnf.d/ssl/slave.crt',
    • MASTER_SSL_KEY = '/etc/my.cnf.d/ssl/slave.key';
  • PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr } 刪除二進制日志,謹慎操作
  • SHOW MASTER STATUS 查看二進制日志狀態(tài)
  • SHOW BINLOG EVENTS 查看二進制日志
  • SHOW BINARY LOGS 查看二進制日志

到此這篇關于MySQL系列之十三 MySQL的復制的文章就介紹到這了,更多相關MySQL的復制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL5.7并行復制原理及實現(xiàn)
  • 詳解MySQL主從復制及讀寫分離
  • MySQL主從復制斷開的常用修復方法
  • MySQL復制問題的三個參數(shù)分析
  • MySql主從復制機制全面解析

標簽:三明 無錫 山西 福州 揚州 溫州 阿里 定西

巨人網(wǎng)絡通訊聲明:本文標題《MySQL系列之十三 MySQL的復制》,本文關鍵詞  MySQL,系列,之,十三,的,復制,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL系列之十三 MySQL的復制》相關的同類信息!
  • 本頁收集關于MySQL系列之十三 MySQL的復制的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    日韩手机在线观看| 咪咪色在线视频| 男女视频免费网站| 国内精品在线视频| 国产中文欧美精品| a级片国产精品自在拍在线播放| 国产精品高潮呻吟久久久久| 91精品久久久久久久久青青| 日韩伦理一区二区三区av在线| 亚洲国产精品第一区二区三区| 亚洲三级观看| 中文字幕福利片| 日本理论片2828理论片| 这里只有精品免费| 免费观看久久久久| 亚洲视频axxx| 久久精品99北条麻妃| 91精品在线观看视频| y111111国产精品久久婷婷| 狠狠干天天干| 91久久久久久久久久久久| 精品国产露脸精彩对白| 3p视频在线观看| 欧美日韩不卡视频| 在线观看国产福利| 欧美日韩亚洲综合一区二区三区激情在线| 老鸭窝毛片一区二区三区| 久久99久久人婷婷精品综合| 精品视频91| 特级毛片在线| 一区二区高清| 欧美日韩国产网站| mm131美女视频| 91精品国产91久久久久青草| 四虎影视2018在线播放alocalhost| 亚洲视频在线a| 精品乱码一区| 一级视频在线观看| 精品国内一区二区三区免费视频| 日本免费一二三区| 日韩av成人在线| 成人午夜在线| 国产欧美精品va在线观看| 成年人小视频在线观看| 福利精品视频在线| 老司机成人免费视频| 久热久精久品这里在线观看| 欧美另类色图| 亚洲理论电影片| 91精品国产自产在线老师啪| 亚洲精品一区二三区不卡| 日本va欧美va精品发布| 中国xxxx视频播放50| 日本成人伦理电影| 欧美性猛交xxxx黑人猛交| av一区二区三区四区电影| 91麻豆一二三四在线| 日韩欧美激情一区二区| 四虎影音在线| 欧美激情日韩图片| 欧美成人高清手机在线视频| 久久99久久久久久久噜噜| sedog在线观看| 久久久久久久国产精品| 国语产色综合| 欧美视频三区| 久久看片网站| 一区免费视频| 夜夜春成人影院| 成人免费网站在线观看视频| 91亚洲精品乱码久久久久久蜜桃| 另类亚洲自拍| 国产女同性恋一区二区| av无码一区二区三区| 免费一级a毛片夜夜看| 精品免费一区二区三区| 九九精品九九| 亚洲老板91色精品久久| 粉嫩的18在线观看极品精品| 欧美sm美女调教| 欧美精品色网| 亚洲国产精品一| 97超碰最新| 亚洲视频在线观看| 欧美性猛交xxxx| 成人亚洲一区二区| 欧美国产日韩激情| 免费在线观看你懂的| 亚洲精品大尺度| 亚洲高清视频在线| 亚洲国产成人精品久久| 国产乱精品一区二区三区| 中文字幕在线观看视频一区| 国产成a人亚洲| 国产精品一区二区av影院萌芽| 蜜臀久久精品久久久用户群体| 欧美性感一类影片在线播放| 欧美三级电影网| 久久精品国产久精国产爱| 亚洲免费观看在线观看| 中文字幕乱码久久午夜不卡| 免费成人在线视频观看| 久久国产视频网站| 久久久久久日本一区99| 中文字幕一区视频| 亚洲欧洲日本韩国| 色多多视频网站| 午夜啪啪福利视频| 日本高清久久天堂| 国产热re99久久6国产精品| 亚洲美女中文字幕| 日本精品一区二区三区在线播放视频| 日韩av免费网站| 国产一级片免费在线观看| 午夜av在线播放| 国产丝袜高跟一区| 在线天堂中文| 性高潮久久久久久久久久| 国产精品久久久久毛片大屁完整版| 亚洲伊人久久综合| 日本一区二区三区www| 日韩毛片网站| 老**午夜毛片一区二区三区| 国产精品久久久久久久美男| 人人玩人人添人人澡欧美| 91极品在线| 99精品视频在线播放观看| 久久人人超碰| 在线亚洲高清视频| 中日韩午夜理伦电影免费| 欧美亚洲国产bt| 久久久久国产精品厨房| 在线三级中文| 欧美日韩一区二区视频在线观看| 在线观看国产一级片| 另类一区二区三区| 日韩精品视频在线| 四虎在线免费看| 91中文字幕网| 午夜视频在线免费看| 天使と恶魔の榨精在线播放| 91九色极品视频| 欧美在线一区二区三区四| 欧美 中文字幕| 成人av动漫在线观看| 久久国内精品视频| 欧美日韩一区二区欧美激情| 久久精品青青大伊人av| 污视频在线观看网站| 人人网欧美视频| 日本精品一区二区三区在线播放视频| 日本特级黄色片| 国产日韩欧美二区| 久久成人福利| 88xx成人永久免费观看| 国产白袜脚足j棉袜在线观看| av影片在线播放| 国内av一区二区| 久久九九国产| 涩涩日韩在线| 国产亚洲va综合人人澡精品| 国产中文精品久高清在线不| 中文视频在线| 先锋av资源在线| 日产午夜精品一线二线三线| 欧美一级在线看| 国产一级性生活| 久久91亚洲精品中文字幕奶水| 男人靠女人免费视频网站| 6080yy午夜一二三区久久| 裸体武打性艳史| 欧美日韩亚洲在线观看| 欧洲成人性视频| 亚洲卡通欧美制服中文| 国产视频丨精品|在线观看| 亚洲国产成人无码av在线| 激情视频极品美女日韩| 日韩精品一区二区三区免费观看| 免费成人你懂的| 国产乱人伦精品一区二区在线观看| gogo大尺度成人免费视频| 天天操天天爽天天射| 色悠悠在线视频| 欧美亚洲国产日本| 久久婷五月综合| 老司机福利av| 懂色av粉嫩av蜜臀av一区二区三区| 一区二区三区四区视频| 亚洲日韩色图| 国产白丝网站精品污在线入口| 精品自拍偷拍视频| 日本一区二区三区视频在线观看| 天堂久久久久久| 夜夜添无码一区二区三区| 中文字幕在线永久在线视频2020| 加勒比一区二区| 在线看的av| 一区二区在线观看免费视频| 精品伦精品一区二区三区视频密桃| 国产精品一区二区不卡视频| 国产精品美女久久久浪潮软件| 91吃瓜网在线观看| 亚洲国产一二三区| xxxx黄色| 欧美久久高跟鞋激| 精品久久国产97色综合| 国产一区精品福利| 免费成人直播| 精品中文字幕视频| www.欧美视频| 在线满18网站观看视频| 国产精品日产欧美久久久久| 国产精品色一区二区三区| 欧美视频一区二区三区| 男人的天堂a在线| 激情视频网站在线播放色| 日韩精品有码在线观看| 欧美xxbbb1手交| 免费av网页| 在线观看成人网| 欧美激情aaa| 蜜桃视频日韩| 日韩精品1区2区3区| 日本欧美色综合网站免费| 日韩精品一区二区三区视频在线观看| 久久视频在线直播| 精品视频全国免费看| 国产一区二区三区四区hd| 亚洲精品乱码日韩| 日韩欧美高清在线播放| www.久久视频| 亚洲人成无码www久久久| 国产97在线|亚洲| 久久久无码人妻精品一区| 国产成人精品免费视频大全软件| 亚洲最大的免费视频网站| 日韩激情视频在线播放| 日本乱理伦在线| 日韩a级大片| 亚洲第九十七页| 在线日韩av| 日韩欧美在线观看一区二区三区| 圆产精品久久久久久久久久久| 欧美性猛交xxxx偷拍洗澡| 午夜欧洲一区| 伊人成人在线观看| 久久精品国产屋| 草草视频在线一区二区| 欧美日韩亚洲激情| 成人网在线免费视频| 一本一本久久a久久精品综合小说| 国产免费拔擦拔擦8x在线播放| 特级做a爱片免费69| 日本不卡免费高清视频在线| 国产精品igao视频网网址不卡日韩| aaa黄色大片| 精品香蕉在线观看视频一| aaaaa一级片| 国精一区二区| 国产在线麻豆精品观看| 日本www在线观看| 99久久国产综合精品成人影院| 91久久嫩草影院一区二区| 女仆av观看一区| 久久精品国产网站| 国产精品96久久久久久又黄又硬| 国产精品国色综合久久| 亚洲国产日韩一区二区| 国产资源一区| 综合毛片免费视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 97成人免费视频| 日本一区二区免费不卡| 亚洲天堂美女视频| 欧美精品欧美极品欧美激情| 久久久精品中文字幕麻豆发布| 日本 片 成人 在线| 澳门黄色一级片| 日韩女优制服丝袜电影| 国产精品自拍亚洲| 欧美一区二区免费视频| 欧美日韩一区二区国产| 欧美一区免费观看| 男女啪啪无遮挡| 性生活免费网站| h视频在线观看网站| 三区精品视频| av在线一区二区| 亚洲精品在线免费观看视频| 国产精品不卡在线观看| h视频网站在线观看| 欧美日韩亚洲国内综合网俺| 欧美在线亚洲| 国产免费高清| 欧美+日本+国产+在线a∨观看| 三区四区电影在线观看| 日韩中文字幕高清| 亚洲国产中文在线二区三区免| 亚洲老板91色精品久久| 亚洲成人激情社区| 五月婷婷一区二区三区| 国产精品国产自产拍高清av水多| 婷婷五月综合缴情在线视频| 久久99热99| 欧美日韩视频第一区| 日产福利视频在线观看| 国产伦精品一区二区三区视频黑人| 91视频免费网站| 亚洲国产成人自拍| 日韩激情在线视频| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲aⅴ天堂av在线电影软件| 久久亚洲精品网站| 天天综合国产| 成人免费一区二区三区在线观看| 国产又粗又长又硬| 香蕉国产精品偷在线观看不卡| 蜜桃视频成人在线观看| 国产日韩一区二区在线观看| 九九热在线视频免费观看| 亚洲精品videosex极品| 国产精品99精品| 久久久久无码精品| 尤物视频网站在线观看| 主播大秀视频在线观看一区二区| 中文乱码字幕高清一区二区| 日韩在线视频免费观看| 日韩美女免费视频|