失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MySQL的复制(主从 主主 基于ssl)

MySQL的复制(主从 主主 基于ssl)

时间:2024-04-26 22:56:28

相关推荐

MySQL的复制(主从 主主 基于ssl)

数据库|mysql教程

mysql,主从,主主.ssl

数据库-mysql教程

c 文件拖放源码,vscode书签跳转,ubuntu dbkg,tomcat没有登录,sqlite3 匹配文本,网页转app插件下载链接,根据前端查询表结构的框架,什么专业要学爬虫的,php验证码乱码,坊子区seo优化,码站网站,学校网页代码下载,html5 页面开发模板下载lzw

1.准备的主机node1:172.16.133.11node2:172.16.133.12均已安装好MySQLMySQL安装见:http://5142926./5132926/9356522.mysql主从复制node1:主服务器

淘宝发布宝贝源码是什么,ubuntu下安装dnvm,tomcat配置初始化,洗脸池爬虫,c语言跟php,辽宁网络营销抖音seo优化要求lzw

营销手机系统源码,ubuntu删除无用文件,本地无法访问tomcat,爬虫动物布景,php 验证座机,山西有实力的seo关键词排名lzw

1.准备的主机

node1:172.16.133.11

node2:172.16.133.12

均已安装好MySQL

MySQL安装见:

2.mysql主从复制

node1:主服务器

node2:从服务器

(1)node1:

启用二进制日志(默认就是启用的)

创建具有复制权限的用户

设置server-id

node2:

启用中继日志(默认是禁用的,如果不需要的话,可以手动关闭二进制日志)

设置server-id

启动从服务,并指定主服务器参数

node1:node1中mysql服务器binary log默认就是开启的,server-id也不用修改,默认即可

创建具有复制权限的用户

node2:修改mysql主配置文件f中的server-id为21,注释掉log-bin=mysql-bin

并在其后添加relay-log=mysql-relay

完成后,进入mysql,查询下全局变量show global variables like ‘%log%;

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

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

进入node2的mysql查看

(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;查看现在所在位置

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

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/f

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

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%’;

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

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

ssl

即可,重启mysql服务

mysql>show variables like ‘%ssl%’;

如果觉得《MySQL的复制(主从 主主 基于ssl)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。