千家信息网

Mysql的主从复制

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,Mysql的主从复制Mysql的主从复制,我们一般用来保证数据间的同步关系,比如有分公司,我们就需要把数据同步给千里之外的分公司,这样就很方便快捷。这个实验我们还实现了ssl安全连接,这样在同步的过程
千家信息网最后更新 2025年11月07日Mysql的主从复制

Mysql的主从复制

Mysql的主从复制,我们一般用来保证数据间的同步关系,比如有分公司,我们就需要把数据同步给千里之外的分公司,这样就很方便快捷。这个实验我们还实现了ssl安全连接,这样在同步的过程起到了安全保护数据的作用

我们这个实验用的mysql版本是5.7,相比较之前的版本会有一些不同

Mysql5.7 支持原生systemd

Mysql5.7 CPU、固的优化 更InnoDB引擎 更为健壮的制功能

安装mysql

我所用的centos7.2x86_64,这个版本自带mariadb-libs,所以要把它卸载:

Rpm -aq | grep mariadb

安装依赖包

安装cmake

【root@localhost ~】# tar zxf cmake-3.5.2.tar.gz

【root@localhost ~】# cd cmake-3.5.2/

【root@localhost cmake-3.5.2】# ./bootstrap

使用 gmake && gmakeinstall 编译

【root@localhost cmake-3.5.2】# gmake && gmake install

安装ncurses

【root@localhost ~】# tar zxf ncurses-5.9.tar.gz

【root@localhost ~】# cd ncurses-5.9/

【root@localhost ncurses-5.9】# ./configure && make && make install

安装bison

【root@localhost ~】# tar zxf bison-3.0.4.tar.gz

【root@localhost ~】# cd bison-3.0.4/

【root@localhost bison-3.0.4】# ./configure && make && make install

安装boost

【root@localhost ~】# tar zxf boost_1_59_0.tar.gz

【root@localhost ~】#cd boost_1_59_0/

【root@localhost boost_1_59_0】# cd

【root@localhost ~】#mv boost_1_59_0 /usr/local/boost

创建用户并添加到组

【root@localhost ~】# groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql

创建mysql安装目录和数据库目录

mkdir/usr/local/mysql ---目录

mkdir/usr/local/mysql/data ---库目录

安装mysql






我们可以使用make && make install 进行编译安装,不过这条命令是只用单线程,安装过程过于缓慢,用下面这条命令可以CPU核数指定线程数,大大提高了安装的速度

make -j $(grep processor/proc/cpuinfo | wc -l)

-j:CPU核数指定线程数

在安装所需模块的时候难免输入错误,当我们想重新运行cmake配置,CMakeCache.txt文件: #makeclean

#rm -f CMakeCache.txt

优化Mysql路径

始化MySQL权表

#cd /usr/local/mysql

# chown -R mysql:mysql . ---,属组,注mysql .

注意:5.7.6后版数据使方式

#/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql

--datadir=/usr/local/mysql/data

生成一条mysql的初始密码(注意保存),后面要用到!

文件

#cd /usr/local/mysql/support-files ---进入MySQL安装

#cp my-default.cnf /etc/my.cnf ---的配

修改下图

#vi /etc/my.cnf

配置mysql自动

我们开启mysql服务是会报错,原因是mysqld.service把默认的pid到了/var/run/mysqld/并没有事立该 目录目录mysql用户;

解决方法有两个:

一是创建mysqld.service文件里指定的目录/var/run/mysqld并给属主权限:chown -R mysql:mysql/var/run/mysqld

二是修改/usr/lib/system/system/mysqld.service文件里的指定路径,写入一个已存在的路径


systemctl daemon-reload重新加载

再次mysql服务

连接数据库 ----密码是刚开的初始密码

修改库管root的密码



基于ssl连接的主复制

1在主mysql创建SSL/RSA文件

#cd /usr/local/mysql/bin ---目录

#mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql

--datadir=/usr/local/mysql/data ---新的SSL文件


重启mysqld服务之前,我们要给server-key.pem权限

chmod +r /usr/local/mysql/data/server-key.pem

然后再重启服务 #systemctl restart mysqld

重启mysql时错误日错了

登录mysql执行mysql>showvariableslike'%ssl%';

从上以看mysql持了ssl连接

在主mysql完成,再REQUIRESSL

进入mysql

Mysql -u root -p '123.abc'

Mysql>grant replication slave on *.* to 'rep'@'192.168.1.%'identified by require ssl;

在主mysql进制日志并重mysql服务

添加

Log-bin=mysql-bin

重启mysql

Systemctlrestart mysqld

进入mysql

Mysql-u root -p '123.abc'

查看master状态

Showmaster status;

注:显示fileposition配置从服用到防火墙允3306/tcp通信

【root@localhost ~】# firewall-cmd --permanent --add-port=3306/tcp

【root@localhost ~】#firewall-cmd -reload


配置从服务器

##可以克隆主mysql,修改ip即可。

mysql服务器 /etc/my.cnf件内容

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

server_id = 2

socket = /usr/local/mysql/mysql.sock

log-error = /usr/local/mysql/data/mysqld.err

relay-log = /usr/local/mysql/data/relay-log-bin

relay-log-index = /usr/local//mysqldata/slave-relay-bin.index

注:server_id,不能和mysql的重复

把主mysql书给务器

在主mysql中的/usr/local/mysql/daata路径下执行scp;

【root@localhost data】# scp ca.pem client-cert.pemclient-key.pem root@192.168.1.150:/usr/local/mysql/data/

注意:192.168.1.150是从mysql的ip,192.168.1.100是主mysql的ip地址。

!!!!!!设置client-key.pemr权限,要不然无法使用私钥

重启mysql服务

Systemctl restrt mysqld

进入数据库

Mysql-u root -p'123.abc'

查看SSL

Show variables '%ssl%';

要求:have-openssl YES

Have-ssl YES

那么可以mysqlSSL连接试:

cd /usr/local/mysql/data

Mysql --ssl-ca=ca.pem ssl-cert=client-cert.pem ssl-key=client-key.pem -u rep

-p123456 -h 192.168.1.100

进入数据库后,使用\s查看数据库详细信息,会发现是主mysql的ip,ssl测试连接成功

最后replicate,登录从mysql上mysql上执行:

开启从mysql服务器

注意:因为我们的从mysql是克隆的主mysql,所以我们要修改从mysql的uuid

路径是:/usr/local/mysql/daa/auto.cnf

修改完成之后重启mysqld服务

Systemctl restart mysqld

登录从mysql 执行

show slave status\G;

会发现:

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

测试:在主mysql上创建库和表,在从mysql上会立刻进行同步!!!!


服务 文件 目录 配置 数据 数据库 服务器 主从 路径 编译 安全 密码 权限 版本 同步 支持 用户 系统 线程 生成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 校园网络安全海报手绘获奖作品 黑客可以入侵到游戏的服务器吗 网络安全现在面临的威胁 福建咨询软件开发介绍 中信银行软件开发中心情况 郎溪自动化软件开发服务解决方案 乡镇网络安全与信息系统自查报告 掌寻天下成都网络技术 服务器主机无限重启 数据库插入行信息 进度网络技术 七日杀steam好友联机服务器终止了 网络技术培训 北京 如何评价服务器seo 崇明区营销软件开发定制价格 淮南企业软件开发定制 术士拉人密语宏如何跨服务器 小飞侠 网络安全 百度网盘 计算机三级网络技术卷 网络安全考研政治题目 服务器芯片安全 奶块女妖服务器 媒体服务器连接超时怎么解决 博客数据库设计 假期安全及网络安全教育 局域网服务器迁移到云服务器 电脑开机是网络安全模式 架设内网服务器 scp秘密实验室服务器管理 深圳布吉岛的互联网科技公司
0