mysql主从复制全面解析及使用演练51CTO博客 - 众发娱乐

mysql主从复制全面解析及使用演练51CTO博客

2019-01-03 15:30:28 | 作者: 寄松 | 标签: 效劳,主从,仿制 | 浏览: 1409

Mysql仿制

Mysql内建的仿制功用是构建大型、高性能运用程序的根底。Mysql支撑单向、异步仿制,仿制进程中一台效劳器充任主效劳器,而别的一个或多个效劳器充任从效劳器。这不仅仅对高性能的程序有利,对其他使命也便利,比方长途同享数据、坚持“热备”等等。

仿制处理的根本问题是让一台效劳器的数据和别的的效劳器坚持同步。主效劳器和从效劳器能够坐落不同的网络拓扑中,还能对整台效劳器、特定的数据库、乃至特定的表进行仿制。


在进入具体设置仿制之前,先看看它实践是怎么仿制数据的。整体来说,仿制有3个进程:

1、主效劳器把数据更改记载到二进制日志中。(这叫做二进制日志事情)

2、从效劳器把主效劳器的二进制日志拷贝到自己的中继日志中。

3、从效劳器重放中继日志中的事情,把更改运用到自己的数据上。

这仅仅概述,每一个进程都很杂乱。下图更明晰描绘了仿制的进程。

第一步是在主效劳器上记载二进制日志。在每个更新数据的业务完结之前,主效劳器都会将数据更改记载到二进制日志中。即便业务在履行期间是交织的,mysql也会串行地将业务写入到二进制日志中。在把事情写入二进制日志之后,主效劳器通知存储引擎提交业务。

第二步是从效劳器把主效劳器的二进制日志拷贝到自己的硬盘上,进入所谓的“中继日志”中。首要,它发动一个作业线程,叫I/O线程,这个I/O线程敞开一个一般的客户端衔接,然后发动一个特别的二进制日志转储进程(它没有相应的SQL指令)。这个转储进程从主效劳器的二进制日志中读取数据。它不会对事情进行轮询。假如3跟上了主效劳器,就会进入休眠状况并等候有新的事情发作时主效劳器宣布的信号。I/O线程把数据写入从效劳器的中继日志中。

第三步SQL线程读取中继日志,而且重放其间的事情,然后更新从效劳器的数据。因为这个线程能跟上I/O线程,中继日志通常在操作体系的缓存中,所以中继日志的开支很低。SQL线程履行事情也能够被写入从效劳器自己的二进制日志中,它关于有些场景很有用。


本篇博文首要解说Mysql的主从仿制、半同步仿制、依据SSL仿制。


环境介绍:

体系:CentoS6.4-x86_64

主效劳器:node1:172.16.18.7

从效劳器:node2:172.16.18.9

Mysql版别:mysql-5.5.33



主从仿制:

思路解析:

主效劳器:创立具有仿制权限的用户账号;设置server-id;发动二进制日志。

从效劳器:发动中继日志;设置server-id;发动仿制线程。

进程解析:

1、创立主从效劳器并完结双机互信:

主效劳器:

[root@node1~]# ssh-keygen -t rsa -P 
[root@node1~]##ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.9

从效劳器:

[root@node2~]# ssh-keygen -t rsa -P 
[root@node2~]##ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.7

2、修正主从效劳器的hosts文件:

[root@node1~]# vim /etc/hosts
#####增加如下两项:###############
172.16.18.7node1.magedu.com  node1
172.16.18.9node2.magedu.com node2
#####保存并仿制至node2上:########
[root@node1~]# scp /etc/hosts 172.16.18.9:/etc

3、检查时刻并同步时刻:

[root@node1 ~]#date;ssh node2 date

留意:有必要确保时刻共同,这样主从仿制才不会完结时刻距离。

4、装置Mysql:(主从效劳器)

这儿不在具体介绍了,请参阅 >

(1)、创立用户
#groupadd -g 306 mysql
#useradd -g mysql -u 306 -r mysql
(2)、创立数据目录:
#mkdir/mydata/data –pv
(3)、更改数据目录权限:
#chown -R mysql.mysql /mydata/data
(4)、解压Mysql创立链接
#tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local
#ln -sv mysql-5.5.33-linux2.6-x86_64 mysql
(5)、更改属主属组
#cd mysql
#chown -R root:mysql./*
(6)、初始化mysql
#scripts/mysql_install_db --user=mysql --datadir=/mydata/data
(7)、创立发动脚本并赋予权限
#cp support-files/mysql.server /etc/rc.d/init.d/mysqld
#chmod +x /etc/rc.d/init.d/mysqld
(8)、创立并修正装备文件
# cp support-files/my-large.cnf /etc/my.cnf
# vim /etc/my.cnf
增加如下行指定mysql数据文件的寄存方位:
datadir = /mydata/data
(9)、更改环境变量
#vim /etc/profile.d/mysql.sh
增加:
export PATH=/usr/local/mysql/bin:$PATH
#. /etc/profile.d/mysql.sh
(10)、增加到效劳列表中并发动mysql
# chkconfig --add mysqld
# service mysql start

5、装备主效劳器:

(1)修正装备文件:

[root@node1 ~]# vim /etc/my.cnf
server-id       = 1        #60行标识自己的ID号
log-bin=mysql-bin          #52行二进制日志,默许是发动的
binlog_format=mixed        #55行运用混合形式

(2)树立仿制账号权限:

[root@node1 ~]# mysql
    mysql>GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO rpuser@172.16.%.% IDENTIFIED BY rpuser;
mysql> FLUSH PRIVILEGES;                  #改写权限

6、装备从效劳器:

(1)修正装备文件:

[root@node2 ~]# vim /etc/my.cnf
server-id       = 20        #60行标识自己的ID号,和主效劳器决不能相同
#log-bin=mysql-bin           #52行封闭二进制日志
#binlog_format=mixed         #55行封闭运用混合形式
#####设置从效劳器为只读形式######
read-only=1       #留意从效劳器不行有写形式
#####增加中继日志################
relay-log=/mydata/data/relay-mysql      #中继日志
relay-log-index=relay-mysql.index       #中继日志索引文件

【relay-log日志记载的是在仿制进程中,从效劳器I/O线程将主效劳器的二进制日志读取过来记载到从效劳器本地文件,然后SQL线程会读取relay-log日志的内容并运用到从效劳器。】

(2)、登录mysql检查线程:

检查发动线程

mysql> SHOW PROCESSLIST;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User |Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
|  1 | root | localhost | NULL | Query   |    0| NULL  | SHOW PROCESSLIST |
+----+------+-----------+------+---------+------+-------+------------------+

依据成果显现:此刻还未发动任何线程。

(3)、装备衔接效劳器:

指令参数解析:

mysql>helpCHANGE MASTER TO
    MASTER_BIND = interface_name       #将操控绑定在那个接口上
  | MASTER_HOST = host_name            #主效劳器地址
  | MASTER_USER = user_name            #主效劳器用户(方才创立的)
  | MASTER_PASSWORD = password         #主效劳器暗码
  | MASTER_PORT = port_num               #作业端口
  | MASTER_CONNECT_RETRY = interval      #重试时刻
  | MASTER_HEARTBEAT_PERIOD = interval   #每隔多长时刻勘探一下是否落后主效劳器,主效劳器是否在线
  | MASTER_LOG_FILE = master_log_name  #指定从哪一个二进制文件仿制
  | MASTER_LOG_POS = master_log_pos      #指定哪一个二进制文件的事情方位
  | RELAY_LOG_FILE = relay_log_name    #中继日志
  | RELAY_LOG_POS = relay_log_pos
  | MASTER_SSL = {0|1}                   #是否运用SSL功用
  | MASTER_SSL_CA = ca_file_name
  | MASTER_SSL_CAPATH = ca_directory_name
  | MASTER_SSL_CERT = cert_file_name
  | MASTER_SSL_KEY = key_file_name
  | MASTER_SSL_CIPHER = cipher_list
  | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}
  | IGNORE_SERVER_IDS = (server_id_list)     #将某些ID号疏忽掉

装备从效劳器衔接主效劳器:

mysql> CHANGE MASTER TO MASTER_HOST=172.16.18.7,
    -> MASTER_USER=rpuser,
    -> MASTER_PASSWORD=rpuser;

(4)发动从效劳器线程:

mysql> START SLAVE;

(5)检查从效劳器作业状况

mysql> SHOW SLAVE STATUS\G
***************************1. row ***************************
               Slave_IO_State: Waiting formaster to send event       #I/O状况;承受主效劳器发送状况
                  Master_Host: 172.16.18.7           #主效劳器用户账号
                  Master_User: rpuser                #用户
                  Master_Port: 3306                  #默许监听端口
                Connect_Retry: 60                    #重试时刻距离
              Master_Log_File: mysql-bin.000002   #读取的二进制日志文件
          Read_Master_Log_Pos: 107                   #事情方位
               Relay_Log_File:relay-mysql.000003 #当时读取的中继日志文件
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes                   #I/O线程已发动
            Slave_SQL_Running: Yes                   #SQL线程已发动
              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: 107
              Relay_Log_Space: 966
              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: 1

7、测验

主效劳器:

mysql> CREATE DATABASE yong;
Query OK, 1 row affected (0.16sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| yong               |
+--------------------+
5 rows inset (0.03 sec)

从效劳器:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| yong               |
+--------------------+
5 rows inset (0.16 sec)

这样主从仿制功用就完结了。



依据事情点仿制:

依据事情点仿制:便是让从效劳器从指定方位进行同步数据,而不是从头开始同步数据。

为了完结作用,这儿将从效劳器mysql的原有数据铲除,其他装备不变:

[root@node2 ~]# service mysqld stop
Shutting down MySQL.                                       [  OK  ]
[root@node2 ~]# rm -rf /mydata/data/
[root@node2 ~]# cd /usr/local/mysql
[root@node2 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
[root@node2 mysql]# service mysqld start

整理完结发动成功进行半同步仿制:

思路:首要在主效劳器上彻底备份数据库,然后将数据导出在从效劳器上运用即可。

1、主效劳器数据库彻底备份

[root@node1~]# mysqldump -uroot  --lock-all-tables --master-data=2 --events --all-databases > all.sql

更多办法请参阅: />

2、备份的数据仿制至从效劳器上

[root@node1 ~]# scp all.sql node2:/tmp/

3、从效劳器将数据导入mysql

mysql> source /tmp/all.sql;        导入数据

4、检查主效劳器上二进制文件及事情方位

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      190 |              |                  |
+------------------+----------+--------------+------------------+

5、装备衔接效劳器

从效劳器衔接主效劳器:

mysql> CHANGE MASTER TOMASTER_HOST=172.16.18.7,
    -> MASTER_USER=rpuser,
    -> MASTER_PASSWORD=rpuser,
    -> MASTER_LOG_FILE=mysql-bin.000002,
    ->MASTER_LOG_POS=190;
Query OK,0 rows affected (0.16 sec)

6、发动从效劳器

mysql>START SLAVE;

7、检查从效劳器状况

mysql> SHOW SLAVE STATUS\G
*************************** 1.row ***************************
               Slave_IO_State: Waiting formaster to send event
                  Master_Host: 172.16.18.7
                  Master_User: rpuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002       #指定的二进制文件
          Read_Master_Log_Pos: 190                    #指定的事情方位
               Relay_Log_File:relay-mysql.000002
                Relay_Log_Pos: 253
        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: 190
              Relay_Log_Space: 405
              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: 1
1 row inset (0.00 sec)

8、测验

主效劳器:

mysql> CREATE DATABASE testdb;
Query OK, 1 row affected (0.01sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| testdb             |
| yong               |
+--------------------+
6 rows inset (0.01 sec)

从效劳器:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| testdb             |
| yong               |
+--------------------+
6 rows inset (0.06 sec)

这样依据事情点主从仿制就完结了!!



半同步主从仿制

半同步的敞开也是比较简单,只需要在Master与Slave效劳器上都装置上半同步的插件并启用即可;

1、在主效劳器上装置半同步插件:


mysql> install plugin rpl_semi_sync_master soname semisync_master.so; #装置Master半同步插件
mysql> set global rpl_semi_sync_master_enabled = 1;    #敞开Master半同步功用
mysql> set global rpl_semi_sync_master_timeout = 1000;

2、检查发动成果:

mysql> show global status like rpl_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     |
+--------------------------------------------+-------+

3、在从效劳器上装置半同步插件:

mysql> install plugin rpl_semi_sync_slave soname semisync_slave.so; #装置Slave半同步插件
mysql> set global rpl_semi_sync_slave_enabled = 1;      #敞开Slave半同步功用

4、重启IO线程:

mysql> stop slave io_thread;
mysql>start slave io_thread;

5、检查主效劳器发动成果:


mysql> show global status like rpl_semi%;
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     | #已经有一个客户端衔接
| 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     |
+--------------------------------------------+-------+

6、检查界说的超时时刻:

mysql> show global variables like %rpl%;
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_recovery_rank                  | 0     |
| rpl_semi_sync_master_enabled       | ON    |
| rpl_semi_sync_master_timeout       | 1000  |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+

7、在从效劳器上检查界说成果:

mysql> show global status like rpl_semi%;
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |

8、测验:

主效劳器:

[root@node1 ~]# mysql -e drop database yong;
[root@node1 ~]# mysql -e show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |

从效劳器:

[root@node2 ~]# mysql -e show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+


这样半同步仿制就完结了,若想永久有用这些装备能够界说至装备文件中。



依据SSL的mysql主从仿制

环境介绍:

Mysql版别:mysql-5.5.33

主效劳器:node1:172.16.18.7 数据未改动

从效劳器:node2:172.16.18.9 数据未改动

演示进程:

在主效劳器上装备CA,然后分别为主从效劳器颁布证书;

更多具体请参阅将主效劳器做成CA效劳器:

[root@node1 mysql]# cd /etc/pki/CA/
[root@node1 CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
[root@node1 CA]# openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 3650
[root@node1 CA]# touch index.txt serial
[root@node1 CA]# echo 01 >serial

2、主效劳器请求证书

[root@node1 mysql]#mkdir ssl
[root@node1mysql]# chown mysql.mysql ssl
[root@node1 mysql]#cd ssl
[root@node1ssl]# (umask 077;openssl genrsa -out master.key 1024)
[root@node1ssl]# openssl req -new -key master.key -out master.csr
[root@node1ssl]# openssl ca -in master.csr -out master.crt -days 365
[root@node1ssl]# chown -R mysql.mysql *

3、从效劳器向主效劳器请求证书

从效劳器:

[root@node2 mysql]#mkdir ssl
[root@node2 mysql]#chown mysql:mysql ssl
[root@node2 ssl]#(umask 077;openssl genrsa -out slave.key 1024)
[root@node2ssl]# openssl req -new -key slave.key -out slave.csr -days 365
[root@node2ssl]# scp slave.csr node1:/tmp

主效劳器:

[root@node1~]# cd /tmp/
[root@node1tmp]# openssl ca -in slave.csr -out slave.crt -days 365
[root@node1tmp]# scp slave.crt node2:/usr/local/mysql/ssl/
[root@node1tmp]# scp /etc/pki/CA/cacert.pem node2:/usr/local/mysql/ssl/

从效劳器:

[root@node2ssl]# chown -R mysql.mysql *

留意:在无论是在Master效劳器上仍是在Slave效劳器上一定要修正ssl目录及其文件的属主属主为mysql。

4、在主效劳器上敞开ssl功用:

[root@node1 ssl]#vim /etc/my.cnf

在mysqld字段中增加如下内容:

ssl
ssl-ca=/etc/pki/CA/cacert.pem
ssl-cert=/usr/local/mysql/ssl/master.crt
ssl-key=/usr/local/mysql/ssl/master.key
#####重启###########
[root@node1 ssl]# service mysqld restart

验证ssl是否敞开成功:

[root@node1 ~]# mysql
mysql> SHOW GLOBAL VARIABLES LIKE %ssl%;
+---------------+---------------------------------+
| Variable_name | Value                           |
+---------------+---------------------------------+
| have_openssl  | YES                             |
| have_ssl      | YES                             |
| ssl_ca        | /etc/pki/CA/cacert.pem          |
| ssl_capath    |                                 |
| ssl_cert      | /usr/local/mysql/ssl/master.crt |
| ssl_cipher    |                                 |
| ssl_key       | /usr/local/mysql/ssl/master.key |
+---------------+---------------------------------+
7 rows inset (0.01 sec)

5、创立答应运用ssl衔接的用户

mysql>help grant;   #检查权限的界说办法,关于ssl的界说方法。
mysql>GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO rpssl@172.16.18.9 IDENTIFIED BY redhat REQUIRE ssl;   #这儿的授权IP不行运用引号引起来,否则后期一定会报错。
mysql>FLUSH PRIVILEGES;

6、在从效劳器上敞开ssl功用

[root@node2~]# vim /etc/my.cnf
仍然在mysqld字段中增加
innodb_file_per_table= 1       #完结单表存储,可疏忽增加
relay-log=/mydata/data/relay-mysql   #中继日志
read-only=1                   #只读选项
ssl
#log-bin=mysql-bin           #注释运用二进制,可选择性
#binlog_format=mixed         #注释二进制类型,可选择性
######重启###########
[root@node2~]# service mysqld restart

验证ssl是否敞开成功:

mysql> SHOW GLOBALVARIABLES LIKE %ssl%;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl  | YES  |
| have_ssl      | YES  |
| ssl_ca        |      |
| ssl_capath    |      |
| ssl_cert      |      |
| ssl_cipher    |      |
| ssl_key       |      |
+---------------+-------+
7 rows inset (0.01 sec)

7、从效劳器衔接主效劳器

mysql> change master tomaster_host=172.16.18.7,
    -> master_user=rpssl,
    -> master_password=redhat,
    -> master_log_file=mysql-bin.000004,
    -> master_ssl=1,
    ->master_ssl_ca=/usr/local/mysql/ssl/cacert.pem,
    ->master_ssl_cert=/usr/local/mysql/ssl/slave.crt,
-> master_ssl_key=/usr/local/mysql/ssl/slave.key;
###########状况显现:#############
mysql> show slave status\G
*************************** 1.row ***************************
               Slave_IO_State:
                  Master_Host: 172.16.18.7
                  Master_User: rpssl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 4
               Relay_Log_File:relay-mysql.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: No
            Slave_SQL_Running: No
              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: 4
              Relay_Log_Space: 107
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: Yes
           Master_SSL_CA_File:/usr/local/mysql/ssl/cacert.pem
           Master_SSL_CA_Path:
              Master_SSL_Cert:/usr/local/mysql/ssl/slave.crt
            Master_SSL_Cipher:
               Master_SSL_Key:/usr/local/mysql/ssl/slave.key
        Seconds_Behind_Master: NULL
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: 0

8、发动从效劳器线程:

mysql> start slave;
mysql> show slave status\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 172.16.18.7
                 Master_User: rpssl
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000004
         Read_Master_Log_Pos: 362
              Relay_Log_File: relay-mysql.000002
               Relay_Log_Pos: 508
       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: 362
             Relay_Log_Space: 660
             Until_Condition: None
              Until_Log_File:
               Until_Log_Pos: 0
          Master_SSL_Allowed: Yes
          Master_SSL_CA_File: /usr/local/mysql/ssl/cacert.pem
          Master_SSL_CA_Path:
              Master_SSL_Cert:/usr/local/mysql/ssl/slave.crt
           Master_SSL_Cipher:
              Master_SSL_Key: /usr/local/mysql/ssl/slave.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: 1

9、测验:

[root@node2 ssl]#mysql --ssl-ca=/usr/local/mysql/ssl/cacert.pem  --ssl-cert=/usr/local/mysql/ssl/slave.crt--ssl-key=/usr/local/mysql/ssl/slave.key  -urpssl -h172.16.18.7 –predhat
mysql> \s
--------------
mysql  Ver 14.14 Distrib5.5.33, for linux2.6 (x86_64) using readline 5.1
Connection id:      3
Current database:
Current user:       rpssl@node2.magedu.com
SSL:            Cipher inuse is DHE-RSA-AES256-SHA     #依据ssl已可用
Current pager:      stdout
Using outfile:      
Using delimiter:    ;
Server version:     5.5.33-logMySQL Community Server (GPL)
Protocol version:   10
Connection:     172.16.18.7via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         29 min 24sec
Threads: 3  Questions:14  Slow queries: 0  Opens: 33 Flush tables: 1  Open tables:26  Queries per second avg: 0.007
--------------

至此,mysql依据ssl主从仿制就完结了!!



总结:

本篇博客成功完结了主从根本仿制,半同步主从仿制,依据ssl主从仿制。笔者演做了5遍完结了全部内容也碰见了各种问题,如本博文描绘不到位或有过错请留言指出,若有关于主从仿制中遇见不解问题也欢迎留言评论!!

后续将更新mysql主主仿制的相关内容,敬请持续重视!!



版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章