mysql 双机备份_mysql双机热备详解及延伸备份
开门见山,首先,主服务器的mysql版本不能高于从服务器的版本 ,可以是一样的,其次端口号必须统一。
好了,现在开始配置双机热备(随后将会提到循环备份以及互备)我使用的版本为redhat5.4两台ip为192.168.1.10、192.168.0.11,备份数据库为test。
热备中数据库分类:master主数据库、slave从数据库
一、两台mysql均可以在本地登录,并设定好密码,打开防火墙3306端口否则,无法进行通讯。
vi /etc/sysconfig/iptables
#在里面添加3306端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
:wq
二、在主数据库中添加用于备份的账号
mysql> GRANT REPLICATION SLAVE ON *.* #注意 这里是星号
-> TO "backupUser"@"IP" IDENTIFIED BY "password";
backupUser填写建立的用户名,IP为从服务器IP,password就不用说了吧~
三、修改主服务器的my.cnf在配置文件中添加
server-id=1 #数据库id,默认1
log-bin=log-bin #日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name #记录日志的数据库 ,可选
binlog-ignore-db=mysql #不记录日志的数据库 可选
log-bin是mysql产生的二进制日志,热备份就是读取二进制日志使数据得到时时同步,建议在binlog-ignore中添加mysql这个库,因为在我测试中这个库也被同步过来了,所以...你懂得
四、重启服务器载入新配置文件
进入数据库
mysql -uroot -p
password:锁定数据库
mysql> FLUSH TABLES WITH READ LOCK;备份所需要的数据表
mysqldump -uroot -ppassword test > /home/backup/mysql/test.sql
#如果有多个就备份多个
锁定数据库是为了准备记录二进制日志的记录点,否则会在从机配置的时候不能正常读取二进制日志
查看在锁定数据库时二进制日志的记录点
mysql> show master status;
+----------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| bin_log.000001 | 805 | | |
+----------------+----------+--------------+------------------+
1 row in set (0.00 sec)
用笔记录二进制日志名称、以及pos点 bin-log.000001、805
解锁数据表
mysql> UNLOCK TABLES;
下载备份sql然后上传到从机上去
五、首先修改从机mysql配置文件
vi /etc/my.cnf
#添加代码
server-id=2 //设置数据库id,可以随便设置。但不能重复
master-host=192.168.1.10 //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=backup //同步数据库的用户
master-password=********* //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
master-retry-count = 999 //尝试连接次数
replicate-do-db=database//表示同步的数据库如多个,请重复添加
binlog-ignore-db=mysql//不同步mysql数据库
设定好上述参数后重启从机mysql
六、进入从机mysql、停止slave(slave开机自动启动)
mysql> slave stop;更新master信息(之前配置文件中是基础数据,此处是详细配置包括后期更改master信息也可以在mysql>中进行更新,但是端口变更要修改配置文件)
mysql> change master to #进入修改master -> master_host='192.168.1.10', #定义master地址
-> master_user='backup', #定义备份时使用的用户
-> master_password=’password‘, #定义备份用户的密码
-> master_log_file='bin_log.000001', #指定从机数据在master中的二进制日志名称 -> master_log_pos=805; #指定从机数据在master中的二进制日志记录点Query OK, 0 rows affected (0.01 sec)更新完成,启动slave
mysql> slave start;
查看slave的运行状态
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.38.7
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: bin_log.000001
Read_Master_Log_Pos: 53229
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 52665
Relay_Master_Log_File: bin_log.000001
Slave_IO_Running: Yes 可以看到此处两个yes代表主从已经开始运行
Slave_SQL_Running: Yes 可以做个数据测试了
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 53229
Relay_Log_Space: 52824
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
IO和SQL均为yes则表示连同,那么可以去测试了,到此双机热备结束。
下面简单介绍双机互备与循环备份的原理
Mysql双机互备(在完成以上的基础不要做数据库进行操作,不要对主进行读写)
原理讲解:如果slave端按照上面配置文件中进行添加那么,默认不开启二进制日志(bin-log)那么他将不产生二进制日志,也就是说slave会一直读取master的二进制日志来更新自己。那么我们就要让slave自己也产生二进制日志。
在slave端的my.cnf添加“bin-log = ”,添加完以后我们可以重启从机然后用
mysql> show master status; #查看slave端自己的master日志
然后再master的上面,进行master change to这个操作,信息都是填slave上的信息,master_log_pos是刚才查看的。
另外,如果在生产机中做双机互备,需要进行锁表,并提前做好备份,以防止数据的丢失。
在生产机当中,分两种情况
1:已经有了主从模式的情况,就需要先对主进行锁表,然后再修改slave的my.cof(添加日志功能),查看slave端的日志pos点(show master status;),然后再主上面做master change to 的操作 ,然后重启mysql即可
2:没有做主从模式的情况,第一步是先做主从,但是主的表在看完日志pos后不要解锁,一直锁着,直到从做好,然后在做从到主,最后在解锁。
适用于A↔B A→B→C(此方法还需要自己测试,然后应用到生产机)
如有问题请留言
mysql 双机备份_mysql双机热备详解及延伸备份相关推荐
- Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解...
大纲 一.前言 二.环境准备 三.安装与配置Nginx (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡 (负载均衡算法:nginx负载算法 up ...
- mysql source 数据库_MySQL 数据库 source 命令详解及实例
MySQL 数据库 source 命令详解及实例 MySQL 数据库 source 命令,该命令是数据库导入命令.source 命令的用法非常简单,首先你需要进入 MySQL 数据库的命令行管理界面, ...
- mysql decimal 类型_MySQL数据类型DECIMAL用法详解
MySQLDECIMAL数据类型用于在数据库中存储精确的数值.我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据. 要定义数据类型为DECIMAL的列,请使用以下语法: ...
- explain mysql怎么用_mysql中explain用法详解
EXPLAIN用于SELECT语句中的每个表返回一行信息.表以它们在处理查询过程中将被MySQL读入的顺序被列出 如果在select语句前放上关键词explain,mysql将解释它如何处理selec ...
- mysql配置文件完全_MySQL配置文件my.cnf详解
以下是Mysql数据库服务器配置文件/etc/my.cnf的详细配置.应用场合是InnoDB引擎,4核CPU, 32位SUSE. [client] port= 3306 socket= /tmp/my ...
- mysql数据库导出_MySQL数据库导入导出详解[转发]
1. 概述 MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入: 2) 直接拷贝数据库目录和文件. 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况 ...
- mysql 字符串解析_MySQL 动态字符串处理详解
MySQL中,常常会看到一些关于动态字符串的处理,列如:DYNAMIC_STRING. 为了记录动态字符串的实际长度,缓冲区的最大长度,以及每次字符串需要调整时,及时分配新的内存,以及调整长度.MyS ...
- mysql事务实战_mysql事务隔离级别详解和实战
A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据 但是 在A事务中查询的话 查到的都是操作之后的数据 没有提交的数据只有自己看得到,并没有update到数据库. 查看InnoD ...
- php mysql 查询缓存_mysql 查询缓存使用详解
MySQL server 有一个重要的特征:查询缓存(Query Cache). 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客 户端的相应结果.如果之后接收到一个同样的查询,服 ...
最新文章
- 软件疑难杂症解决办法汇总
- 致远M1移动协同软件
- python gis 经纬度 库_入门-Python-GIS坐标转换
- python draw.text颜色_python wand:用draw.text()改变文本样式
- 开源声码器WORLD在语音合成中的应用
- Oracle以SQL方式导出导入(转移)数据
- 基于JAVA+SpringMVC+Mybatis+MYSQL的宠物医院管理系统
- RocketMQ 部署不当导致磁盘空间不释放
- android rtorrent 编译,rtorrent交叉编译
- 以逗号分隔的正则表达式_再见,正则表达式
- 装饰模式实例+java,java 中设计模式(装饰设计模式)的实例详解
- UE4开发笔记1——UE4(虚幻4)引擎下载与安装
- 昆明理工大学计算机考研分数线,昆明理工大学2015考研分数线已公布
- 小米组织架构调整成立技术委员会 强化技术引领 增强互联网成色
- 【NOIP 2018 提高组】填数游戏
- 力扣启蒙 - 开启算法的世界
- 嵌入式arm板linux路由表设置
- Unity鼠标图标更换/点击图标更换
- 羌笛声声胡笳怨,此心长寄天涯远
- AtCoder ABC 250 总结
热门文章
- delphi idtcpclient和idtcpserver的心跳包
- jmeter报告分析工具
- [asp.net] 验证控件的属性及用法
- 解决FlexPaper分页分段加载问题(转)
- Ubuntu 11.10 make menuconfig 失败的解决方法
- data.length 提示undefined 问题解决
- 内容推荐策略产品经理的方法和实践
- 【报告分享】2021企业营销数字化转型研究报告.pdf(附下载链接)
- 如何构建一个生产环境的推荐系统?(附代码)
- 159挑战 | 1:59:40,基普乔格打开人类新时代!