Mysql主主ssl复制_MySQL的复制(主从,主主,基于ssl)

mysql>show slave status/G查看从服务器工作状态,可以看到Slave_IO_Running: No和Slave_SQL_Running: No还是no,启用这两项

然后就算配置完成了,可以在node1中建立一个测试数据库testdb,和一个测试表t1

58d044cfaf83d8d8369d8dc834c4fe3e.png

进入node2的mysql查看

b622ad531d2955832e6661c246698634.png

(2).如果不想让从服务器线程在mysql服务启动时自动启动,则可以在从服务器中设置skip-slave-start=1

为防止主服务器突然崩溃,可以在主服务器上设置

sync_binlog=1

innodb_flush_logs_at_trx_commit=1

(3).数据库复制过滤

主服务器

[mysqld]

binlog-do-db=magedu

在主服务器过滤:任何不涉及到数据库相关的写操作都不会被记录到二进制日志当中,所以最好不要设置,一般在从服务器中设置即可

从服务器:

replicate_do_db

rpplicate_ignore_db

replicate_do_table

replicate_ignore_table

replicate_wild_do_table

replicate_wild_ignore_table

在从服务器上只复制testdb一个数据库:

[mysqld]

replicate_do_db=testdb

replicate_do_db=mysql

(4).如果主服务器以运行很长时间,才接入一台新的从服务器,如果采取复制,会比较慢,可以采用备份的方式

node1:先对mysql服务器施加读锁

mysql>flush tables with read lock;

而后对mysql所在数据目录的逻辑卷,进行备份

lvcreate -L 50M -s -p r -n mydata-snap /dev/myvg/mydata

mysql>show master status;查看现在所在位置

091eea9697fd59f2492c1f91cc0eab1f.png

mysql>unlocak tables(备份完成后要立即解锁)

mount /dev/myvg/mydata-snap /mnt

cd /mnt

ll

find . | cpio -o -H newc --quiet | gzip > /root/alldatabase.gz

cd

umount /mnt

scp alldatabase.gz node2:/root

mysql>use testdb

mysql>create table tb2

0c057cc4086254d2ca9dbc8a9a8f1568.png

node2:

gzip -d /root/alldatabase.gz

cp alldatabase /data/mydata

cd /data/mydata

cpio -id < alldatabase

rm alldatabase

然后就可以直接service mysqld start

然后进入mysql,重新设置主从

mysql>change master to master_host='172.16.133.11',master_user='repluser',master_password='redhat',master_log_file='mysql-bin.000003',master_log_pos=542;

mysql>start slave;

mysql>show slave status\G

mysql>use testdb;

mysql>show tables

备份+复制完成

(5).半同步主从复制

node1:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;

node2:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;

也可通过设置全局变量的方式来设置,如下:

set global rpl_semi_sync_master_enabled=1

取消加载插件

mysql> UNINSTALL PLUGIN rpl_semi_sync_master;

查看从服务器上的semi_sync是否开启:

mysql> SHOW GLOBAL STATUS LIKE 'rpl_semi%';

查看主服务器上的semi_sync是否开启,虚拟主机,注意clients 变为1 ,证明主从半同步复制连接成功:

(6).基于ssl传输的mysql主从复制

①.修改配置文件

node1:

server_id=10

log_bin=mysql-bin

sync_binlog=1事务提交后立即写入磁盘二进制文件,不再先缓存再写

node2:

read_only=1

②准备证书,私钥

Ⅰ.建立字签证服务器

node1:

vim /etc/pki/tls/openssl.cnf

dir=/etc/pki/CA

(umask 077;openssl genrsa 2048 > private/cakey.pem)

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655

ea5de288254a7275da8a223ed36498d2.png

mkdir certs crl newcerts

touch index.txt

echo 01 > serial

Ⅱ.为node1上的mysql准备私钥及颁发证书

mkdir /usr/local/mysql/ssl

cd ssl/

(umask 077;openssl genrsa 1024 > mysql.key)

openssl req -new -key mysql.key -out mysql.csr

openssl ca -in mysql.csr -out mysql.crt

cp /etc/pki/CA/cacert.pem /usr/local/mysql/ssl/

Ⅲ.为node2上的mysql准备私钥及颁发证书

mkdir /usr/local/mysql/ssl

cd ssl/

(umask 077;openssl genrsa 1024 > mysql.key)

openssl req -new -key mysql.key -out mysql.csr

scp ./mysql.csr node1:/root

Ⅳ.为node2签发证书

openssl ca -in mysql.csr -out mysql.crt

scp ./mysql.crt node2:/usr/local/mysql/ssl

cd /etc/pki/CA

scp ./cacert.pem node2:/usr/local/mysql/ssl

完成后,确定node1和node2中的/usr/local/mysql/ssl目录下,有这4个文件

③.打开mysql的ssl功能

node1:

mysql>show variables like '%ssl%';

b0a81eab1af20cde278670a43b6d4f28.png

其中have_openssl,have_ssl显示为disabled,表示未开启ssl

编辑主配置文件/etc/my.cnf在[mysqld]中添加

ssl

即可,重启mysql服务

mysql>show variables like '%ssl%';

541739d8fdbb26786d0a528aa52b2436.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值