千家信息网

如何实现mysql主从复制及数据备份恢复

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关如何实现mysql主从复制及数据备份恢复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。服务器分别作以下操作">1、主从服务器分别作以下操作:1.1
千家信息网最后更新 2026年11月01日如何实现mysql主从复制及数据备份恢复

这篇文章给大家分享的是有关如何实现mysql主从复制及数据备份恢复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

服务器分别作以下操作">1、主从服务器分别作以下操作:

1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码

2、修改主服务器master:

#vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3、修改从服务器slave:

#vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[不是必须]启用二进制日志 server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段

4、重启两台服务器的mysql

systemctl restart mysqld

5、在主服务器上建立帐户并授权slave:

#/usr/local/mysql/bin/mysql -uroot -pmttang mysql>GRANT REPLICATION SLAVE ON *.* to '账户'@'从服务器的ip' identified by '密码';

一般不用root帐号,%表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

6、登录主服务器的mysql,查询master的状态

mysql>show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 308 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) 注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

7、配置从服务器Slave:

mysql>change master to master_host='192.168.71.128',master_user='root',master_password='root',master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。Mysql>start slave; //启动从服务器复制功能

8、检查从服务器复制功能状态:

mysql> show slave statusG *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.2.222 //主服务器地址 Master_User: mysync //授权帐户名,尽量避免使用root Master_Port: 3306 //数据库端口,部分版本没有此行 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos Relay_Log_File: ddte-relay-bin.000003 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。

9、主从服务器测试:

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

mysql> create database hi_db; Query OK, 1 row affected (0.00 sec) mysql> use hi_db; Database changed mysql> create table hi_tb(id int(3),name char(10)); Query OK, 0 rows affected (0.00 sec) mysql> insert into hi_tb values(001,'bobu'); Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | hi_db | | mysql | | test | +--------------------+ 4 rows in set (0.00 sec)

从服务器Mysql查询:

mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | hi_db | //I'M here,大家看到了吧 | mysql | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> use hi_db Database changed mysql> select * from hi_tb; //查看主服务器上新增的具体数据 +------+------+ | id | name | +------+------+ | 1 | bobu | +------+------+ 1 row in set (0.00 sec)

10、完成: 编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。

MySQL主从同步故障-Slave_SQL_Running: No

故障现象: 进入slave服务器,运行:

mysql> show slave statusG ....... Relay_Log_File: localhost-relay-bin.000535 Relay_Log_Pos: 21795072 Relay_Master_Log_File: localhost-bin.000094 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: ......

解决办法一、

首先停掉Slave服务:

mysql>stop slave;

到主服务器上查看主机状态: 记录File和Position对应的值 进入master

mysql> show master status;+----------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+----------------------+----------+--------------+------------------+| localhost-bin.000094 | 33622483 | | | +----------------------+----------+--------------+------------------+1 row in set (0.00 sec)

然后到slave服务器上执行手动同步:

mysql> change master to master_log_file='loccalhost-bin.000094',master_log_pos=33622483;mysql> start slave;//开启同步

再查询状态看是否正常

mysql>show slave statusG*************************** 1. row ***************************........ Master_Log_File: localhost-bin.000094 Read_Master_Log_Pos: 33768775 Relay_Log_File: localhost-relay-bin.000537 Relay_Log_Pos: 1094034 Relay_Master_Log_File: localhost-bin.000094 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB:

注意:手动同步需停止主库的写操作!

解决办法二、

mysql> stop slave;mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;mysql> start slave;

说明: Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件 Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令。

数据备份:

格式:mysqldump -h链接ip -P(大写)端口 -u用户名 -p密码数据库名>d:XX.sql(路劲)

示例:mysqldump -uroot -p8888 htgl>d:htgl.sql 如出现报错Warning: Using a password on the command line interface can be insecure.则需要修改配置文件:

vim /etc/mysql/my.cnf[mysqldump]user=your_backup_user_namepassword=your_backup_password

修改完配置文件,重启MyQL后,只需要执行 mysqldump 脚本就可以了。备份脚本中不需要涉及用户名密码相关信息。示例:mysqldump htql>d:htql.sql

数据恢复:

1、系统命令行

格式:mysql -h链接ip -P(大写)端口 -u用户名 -p密码 数据库名 < d:XX.sql(路劲)

mysql -uusername -ppassword db1

2、或mysql命令行

mysql>user db1;source tb1_tb2.sql;

3、恢复整个数据库的方法:

mysql -u b_user -h 101.3.20.33 -p'H_password' -P3306 < all_database.sql

感谢各位的阅读!关于"如何实现mysql主从复制及数据备份恢复"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

服务 服务器 数据 状态 主从 日志 密码 数据库 同步 备份 文件 配置 数据备份 二进制 命令 用户 用户名 端口 脚本 查询 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技与互联网 金融科技还是互联网 火传媒上海互联网科技 国外互联网科技网站 金融科技和互联网金融 互联网教育科技公司vipkid 小米互联网科技园设置 北京华百购互联网科技有限公司 承德科技产业互联网发展 科技互联网大厂 健康食品互联网创新科技园项目 伊宁互联网科技做什么的 元气玛特互联网科技公司是外包吗 杭州披云加互联网科技有限公司 广州梦谷互联网科技有限公司领导 互联网科技企业商标注意事项 银川新华互联网科技学校是国营吗 互联网科技职业技能培训学校 山东蛋芒互联网科技有限公司 互联网科技企业文化 咖啡豆 中智农互联网科技 国智互联网科技 狮子座互联网科技培训 太原新华互联网科技学校怎么样 卫星互联网科技股票 阿里互联网科技公司 福建科技产业互联网发展 华夏互联网科技业 华中科技大学互联网的牛人
0