MySQL互为主从模型实现基于SSL复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL互为主从模型实现基于SSL复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8872字,纯文字阅读大概需要13分钟。
内容图文
![MySQL互为主从模型实现基于SSL复制](/upload/InfoBanner/zyjiaocheng/1068/2bc9669d650c4d26bcf3a1bd1c9b2d46.jpg)
MySQL: Server version: 5.5.33
[root@mysql1 CA]# (umask 077; openssl genrsa 2048 > private/cakey.pem)
[root@mysql1 CA]# openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem
2)、主机A上创建证书,并开启ssl功能
[root@mysql1 mysqldata]# mkdir ssl
[root@mysql1 mysqldata]# ls
binlog data ssl
[root@mysql1 mysqldata]# chown mysql.mysql ssl
[root@mysql1 mysqldata]# cd ssl
[root@mysql1 ssl]# (umask 077; openssl genrsa 1024 > master.key)
[root@mysql1 ssl]# openssl req -new -key master.key -out master.csr
[root@mysql1 ssl]# openssl ca -in master.csr -out master.crt
[root@mysql1 ssl]# chown mysql.mysql *
[root@mysql1 ssl]# ls
master.crt master.csr master.key
[root@mysql1 ssl]# vim /etc/my.cnf
[mysqld]
ssl
ssl-ca=/etc/pki/CA/cacert.pem
ssl-cert=/mysqldata/ssl/master.crt
ssl-key=/mysqldata/ssl/master.key
[root@mysql1 ssl]# service mysqld restart
[root@mysql1 ssl]# mysql -uroot -hlocalhost -p
mysql> show variables like ‘%ssl%‘;
+---------------+---------------------------+
| Variable_name | Value |
+---------------+---------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca |/etc/pki/CA/cacert.pem |
| ssl_capath ||
| ssl_cert |/mysqldata/ssl/master.crt |
| ssl_cipher ||
| ssl_key |/mysqldata/ssl/master.key |
+---------------+---------------------------+
7 rows in set (0.01 sec)
3)、在主机B上创建证书
[root@mysql2 mysqldata]# mkdir ssl
[root@mysql2 mysqldata]# chown mysql.mysql ssl
[root@mysql2 mysqldata]# cd ssl
[root@mysql2 ssl]# (umask 077;openssl genrsa 1024 > slave.key)
[root@mysql2 ssl]# openssl req -new -key slave.key -out slave.csr
[root@mysql2 ssl]# scp slave.csr mysql1.wumoumou.com:/tmp
主机A签曙主机B的证书
[root@mysql1 ssl]# openssl ca -in /tmp/slave.csr -out /tmp/slave.crt
[root@mysql1 ssl]# scp /tmp/slave.crt mysql2.wumoumou.com:/mysqldata/ssl/
[root@mysql1 ssl]# scp /etc/pki/CA/cacert.pem mysql2.wumoumou.com:/mysqldata/ssl/
回到主机B,***权限
[root@mysql2 ssl]# chown mysql.mysql *
[root@mysql2 ssl]# ls
cacert.pem slave.crt slave.csr slave.key
4)、修改主机B中mysql配置文件,开启ssl功能
[root@mysql2 ssl]# vim /etc/my.cnf
[mysqld]
ssl
ssl-ca=/mysqldata/ssl/cacert.pem
ssl-cert=/mysqldata/ssl/slave.crt
ssl-key=/mysqldata/ssl/slave.key
[root@mysql2 ssl]# service mysqld restart
[root@mysql2 ssl]# mysql -uroot -hlocalhost -p
mysql> show variables like ‘%ssl%‘;
+---------------+---------------------------+
| Variable_name | Value |
+---------------+---------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca |/mysqldata/ssl/cacert.pem |
| ssl_capath ||
| ssl_cert |/mysqldata/ssl/slave.crt |
| ssl_cipher ||
| ssl_key |/mysqldata/ssl/slave.key |
+---------------+---------------------------+
7 rows in set (0.00 sec)
2、配置两主机复制
1)、在两台服务器上各自建立一个具有复制权限的用户
mysql> grant replication slave,replication client on *.* to ‘repluser‘@‘172.16.%.%‘ identified by ‘redhat‘;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
2)、修改配置文件
主机A/etc/my.cnf:
datadir=/mysqldata/data
innodb_file_per_table=ON
log-bin=/mysqldata/binlog/master-bin
binlog_format=mixed
server-id =100
relay-log =/mysqldata/relaylog/relay-bin
auto-increment-offset=1# 起始值
auto-increment-increment=2# 步长
skip_slave_start # 跳过slave自动启动,不让从服务器的IO和SQL两线程自动启动;
[root@mysql1 mysqldata]# mkdir relaylog && chown mysql.mysql relaylog;
主机B/etc/my.cnf:
datadir=/mysqldata/data
innodb_file_per_table=ON
log-bin=/mysqldata/binlog/master-bin
binlog_format=mixed
server-id =200
relay-log =/mysqldata/relaylog/relay-bin
auto-increment-offset=2
auto-increment-increment=2
skip_slave_start
[root@mysql2 mysqldata]# mkdir relaylog && chown mysql.mysql relaylog;
3)、记录双方二进制日志位置
主机A:
mysql> show master status\G
***************************1. row ***************************
File: master-bin.000005
Position:107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
主机B:
mysql> show master status\G
***************************1. row ***************************
File: master-bin.000004
Position:107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.03 sec)
4)、各服务器接下来指定对另一台服务器为自己的主服务器即可
主机A:
mysql> change master to master_host=‘172.16.36.2‘,master_user=‘repluser‘,master_password=‘redhat‘,master_log_file=‘master-bin.000004‘,master_log_pos=107,master_ssl=1,master_ssl_ca=‘/etc/pki/CA/cacert.pem‘,master_ssl_cert=‘/mysqldata/ssl/master.crt‘,master_ssl_key=‘/mysqldata/ssl/master.key‘;
Query OK, 0 rows affected (0.04 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
***************************1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host:172.16.36.2
Master_User: repluser
Master_Port:3306
Connect_Retry:60
Master_Log_File: master-bin.000004
Read_Master_Log_Pos:107
Relay_Log_File: mysql1-relay-bin.000002
Relay_Log_Pos:254
Relay_Master_Log_File: master-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:107
Relay_Log_Space:411
Until_Condition: None
Until_Log_File:
Until_Log_Pos:0
Master_SSL_Allowed: Yes
Master_SSL_CA_File:/etc/pki/CA/cacert.pem
Master_SSL_CA_Path:
Master_SSL_Cert:/mysqldata/ssl/master.crt
Master_SSL_Cipher:
Master_SSL_Key:/mysqldata/ssl/master.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 in set (0.00 sec)
主机B:
mysql> change master to master_host=‘172.16.36.1‘,master_user=‘repluser‘,master_password=‘redhat‘,master_log_file=‘master-bin.000005‘,master_log_pos=107,master_ssl=1,master_ssl_ca=‘/mysqldata/ssl/cacert.pem‘,master_ssl_cert=‘/mysqldata/ssl/slave.crt‘,master_ssl_key=‘/mysqldata/ssl/slave.key‘;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
***************************1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host:172.16.36.1
Master_User: repluser
Master_Port:3306
Connect_Retry:60
Master_Log_File: master-bin.000005
Read_Master_Log_Pos:107
Relay_Log_File: mysql2-relay-bin.000002
Relay_Log_Pos:254
Relay_Master_Log_File: master-bin.000005
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:107
Relay_Log_Space:411
Until_Condition: None
Until_Log_File:
Until_Log_Pos:0
Master_SSL_Allowed: Yes
Master_SSL_CA_File:/mysqldata/ssl/cacert.pem
Master_SSL_CA_Path:
Master_SSL_Cert:/mysqldata/ssl/slave.crt
Master_SSL_Cipher:
Master_SSL_Key:/mysqldata/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:100
1 row in set (0.00 sec)
5)、测试复制效果
主机A:
mysql> create database db1;
Query OK, 1 row affected (0.00 sec)
mysql> use db1;
Database changed
mysql> create table t1(id int(10) PRIMARY KEY AUTO_INCREMENT,name char(20));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t1 (name) value (‘tom‘);
Query OK, 1 row affected (0.01 sec)
mysql> insert into t1 (name) value (‘jery‘);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+----+------+
| id | name |
+----+------+
|1| tom |
|3| jery |
+----+------+
2 rows in set (0.00 sec)
主机B:
mysql> use db1;
Database changed
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| t1 |
+---------------+
1 row in set (0.00 sec)
mysql> select * from t1;
+----+------+
| id | name |
+----+------+
|1| tom |
|3| jery |
+----+------+
2 rows in set (0.00 sec)
mysql> insert t1(name) value(‘Jason Bourne‘);
Query OK, 1 row affected (0.01 sec)
mysql> insert t1(name) value(‘James Bond‘);
Query OK, 1 row affected (0.02 sec)
mysql> select * from t1;
+----+--------------+
| id | name |
+----+--------------+
|1| tom |
|3| jery |
|4| Jason Bourne |
|6| James Bond |
+----+--------------+
4 rows in set (0.00 sec)
因为使用了参数auto-increment-offset和auto-increment-increment配置两主机,因此数据库db1中t1表的id字段,奇数的归主机A插入,偶数的归主机B插入;
全文完!
原文:http://wubinary.blog.51cto.com/8570032/1405355
内容总结
以上是互联网集市为您收集整理的MySQL互为主从模型实现基于SSL复制全部内容,希望文章能够帮你解决MySQL互为主从模型实现基于SSL复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。