千家信息网

MySQL新增从库

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,项目背景描述:在项目的开始只有一个MySQL实例在运行,后期因为安全性,压力,备份等原因需要在此实例的基础上面新增一个从库。分析:MySQL主从是基于binlog日志来实现的,那么需要主服务器开启bi
千家信息网最后更新 2026年10月31日MySQL新增从库

项目背景描述:

在项目的开始只有一个MySQL实例在运行,后期因为安全性,压力,备份等原因需要在此实例的基础上面新增一个从库。


分析:

MySQL主从是基于binlog日志来实现的,那么需要主服务器开启binlog,此选项默认是关闭。我这边服务器在部署的时候就开启了,因为使用binlog可以用来恢复MySQL数据,并且还为以后做主从做好准备,所以我们推荐大家在部署主服务器的时候就开启此选项。另外在做主从的时候还需要主库和从库的server-id唯一,server-id在做主从的时候也是相当关键的一荐参数。

另外因为我们MySQL主库已经运行一段时间了,里面已经有相当多数据,我们需要将这些数据备份出来,然后从库再从备份的节点同步数据,这样来保持主从的数据一致性,并且在操作过程中最好不要影响我们的业务正常运行。最终决定使用xtrabackup来备份数据,因为用xtrabackup备份数据的时候不需要琐表,但只限于InnoDB引擎的数据库和XtraDB引擎的数据库,对于MyISAM引擎的数据库还是会琐表,刚好我们的数据库引擎使用的是InnoDB


操作步骤:

第一步:部署从数据库服务器,最好数据库版本一致,部署过程省略


第二步:修改配置文件

# 以下为主服务器需要修改的配置,server_id不一定为82,可以为任何一个数字,比如我们可以用本机的IP最后一位[mysqld]datadir=/data/mysql       #此选项一定要指定,就算有默认也需要指定log_bin=mysql-binserver_id=10expire_logs_days=5        #指定binlog文件保留的天数,如果硬盘空间够大可以不指定,或者指定天数多一点# 以下为可选项binlog-ignore-db=mysql,information_schema,performance_schema,sys    #指定忽略不同步的数据库binlog-do-db=discuz,phpcms                                          #指定要同步的数据库

在主服务器上面授权从服务器一个主从同步账号

mysql> grant replication slave on *.* to 'slave'@'%' identified by '123qweASD';

说明:以上授权命令根据自己需求更改,比如权限,可访问数据库,用户名,授权客户端,密码等信息

# 以下为从服务器需要修改的配置datadir=/data/mysql                      #此选项一定要指定,就算有默认也需要指定server_id = 2# 以下为可选项replicate-do-db                          #指定需要同步的数据库replicate-ignore-db                      #指定不同步的数据库replicate-do-table                       #指定需要同步的表replicate-ignore-table                   #指定不同步的表replicate-wild-do-table                  #指定需要同步的表,可以使用通配符,如test.tables1%replicate-wild-ignore-table              #指定不需要同步的表,可以使用通配符# 优化同步延迟,根据项目设置slave_parallel_workers = 16     #多少个线程用于主从复制slave_parallel_type= logical_clock


第三步:安装xtrabackup工具(主从服务器都需要安装)

至以下连接下载适合自己操作系统版本和MySQL版本的xtrabackup

xtrabackup下载

下载完成后执行以下命令安装

# 这样可以自动安装所需要依赖包yum -y install percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm


第四步:备份数据

注意:以需要使用root用户执行,或者使用sudo权限执行

备份整个库

xtrabackup --user=root --password=123456 --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--user 指定数据库访问用户名

--password 指定数据库访问密码,如果密码有特殊字符需要使用单引号引起来

--target-dir 指定备份路径,最好写绝对路径

--backup 与--target-dir选项一起使用

-S 指定mysql.sock文件位置

备份单个库

xtrabackup --user=root --password=123456 --databases=test1 --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases 指定需要备份的库名

备份多个库

xtrabackup --user=root --password=123456 --databases="test1 test2 test3" --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases 多库用双引号引起来,使用空格进行分隔

备份某个库的指定表

xtrabackup --user=root --password=123456 --databases="test1.tables1 test2.tables2 test3.tables3" --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases 备份表使用库名.表名的方式,如果是多个表就使用双引号引起来,不同表使用空格分隔


第五步:将备份数据复制到从服务器

scp -pr /root/mysql_bak/* root@172.16.10.11:/data/mysql_slave


第六步:将数据还原到从服务器

注意:还原之前需要停止从库数据库服务并清空从服务器数据目录,如果有需要的数据就先备份到其实地方

# 停止服务service mysqld restart || systemctl restart mysqld
# 备份原数据mkdir /data/mysql_bakmv /data/mysql/* /data/mysql_bak

还原操作

xtrabackup --prepare --target-dir=/data/mysql_slavextrabackup --copy-back --target-dir=/data/mysql_slave


第七步:启动数据库并启用主从

# 将原备份数据复制回原目录,注意:ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1四个文件不要覆盖# 如果从库没有数据需要往回复制的话就不需要cp这步操作cp -r /data/mysql_bak/* /data/mysqlchown -R mysql:mysql /data/mysqlservice mysqld restart || systemctl restart mysqld

执行以下命令

mysql> change master to master_host='172.16.10.10',master_port=3306,master_user='slave',master_password='123qweASD',master_log_file='mysql-bin.000011',master_log_pos=154;

master_host: master服务器的IP地址

master_port: master服务器的端口

master_user: master服务器授权从服务器主从同步的用户名

master_password: master服务器授权从服务器主从同步的密码

master_log_file: 从主服务器备份出来的文件:xtrabackup_info中获取

grep "binlog_pos" xtrabackup_info | awk -F "'" '{print $2}'

master_log_pos: 从主服务器备份出来的文件:xtrabackup_info中获取

grep "binlog_pos" xtrabackup_info | awk -F "'" '{print $4}'

执行以下命令启用主从同步

mysql> start slave;

小知识:停止主从同步命令为

# 以下为扩展知识命令,如果执行后需要再执行上条命令start slave;mysql> stop slave;


第八步:测试并检查主从状态

mysql> show slave status \G;

如果看以以下两个值为Yes说明主从同步正常

Slave_IO_Running: YesSlave_SQL_Running: Yes


第九步:测试

可以修改下需要同步的库,或者表的数据看上是否能正常同步去,或者在备份完的时候就去修改下数据,这时候备份里同是没有此修改记录,当启用主从同步的时候看下数据是否会同步过来

数据 服务 备份 服务器 同步 主从 数据库 命令 时候 文件 密码 引擎 用户 引号 最好 版本 用户名 项目 运行 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 互联网金融 金融科技 奇酷互联网科技 成都互联网科技公司 奇酷互联网络科技公司 上海致骋互联网科技 亿账通互联网科技 互联网科技小额贷款 互联网养老 桔豆科技 中国最先进互联网科技公司 银川新华互联网科技职业技术培训学校图片 湖北码尼互联网科技有限公司电话 昭通互联网科技选哪家 阿大互联网科技有限公司 东莞新华互联网科技学校 伊宁互联网科技做什么的 合肥互联网科技公司公章图片 厦门江牛科技互联网 上海同邻互联网科技有限公司规模 上海万顺科技互联网有限公司招聘 互联网科技园 广东猪兼强互联网科技有限公司 互联网是不是新科技 麻工互联网科技 科技制造互联网公司 亿人帮互联网科技 互联网科技股有哪些 福州新华互联网科技学校 知乎 苏州五指互联网络科技有限 黑科技 体验场景 互联网大会
0