MySQL数据库双机热备份
MySQL数据库双机热备份
1、mysql 数据库没有增量备份的机制
当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。
2、要想实现双机的热备首先要了解主从数据库服务器的版本的需求。
要实现热备 mysql 的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
3、设置主数据库服务器:
a.首先查看主服务器的版本
首先查看主服务器的版本是否是支持热备的版本。然后查看 my.cnf(类 unix)或者 my.ini(windows)中 mysqld 配置块的配置有没有 log-bin (记录数据库更改日志),因为 mysql 的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
b.配置
1.创建同步用户
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%' IDENTIFIED BY 'slavepass';
4.0.2 以前的版本, 因为不支持 REPLICATION 要使用下面的语句来实现这个功能
mysql> GRANT FILE ON *.*
-> TO 'repl'@'%' IDENTIFIED BY 'slavepass';
2.主从模式:A->B
A为master
修改A mysql的my.ini文件。在mysqld配置项中加入下面配置:
以下是老版本的写法,我用这个配置, mysql 5.6 启动不起来,
server-id= //数据库的 id 这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里也可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
由于我使用的是5.6 的版本, 配置如下:
binlog_do_db=test
server_id =
log_bin=F:/db-data/binlog/binLog.log
log-error =F:/db-data/logs/mysql-error.log
general_log =
general_log_file =F:/db-data/logs/mysql.log
c.重起数据库服务。
用show master status 命令看日志情况。
mysql> show master status ;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binLog. | | test | | |
+---------------+----------+--------------+------------------+-------------------+
row in set (0.00 sec)
B为slave
老版本可以修改B mysql的my.ini文件。在mysqld配置项中加入下面配置:
server-id=2
master-host=xxxxxxx
#同步用户帐号
master-user=x
master-password=x
master-port=3306
#预设重试间隔60秒
master-connect-retry=60
#告诉slave只做backup数据库的更新
replicate-do-db=test
binlog_ignore_db=mysql
但是 Mysql版本从5.1.7以后开始就不支持“master-host”类似的参数了;
无奈之下,从数据库my.cnf修改为以下配置;(主数据库中注意ID为1,并加入要同步的库既可)
server-id=2
然后再从库执行命令:
change master to master_host='***.**.**.***', master_user='xx', master_password='xx',MASTER_CONNECT_RETRY=60;
我们可以使用 show slave status\G; 来查看一下slave 状态
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 115.29.36.149
Master_User: c
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binLog.000001
Read_Master_Log_Pos: 107
Relay_Log_File: Q12MB1DR67JGLJT-relay-bin.000002
Relay_Log_Pos: 267
Relay_Master_Log_File: binLog.000001
Slave_IO_Running: 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: 107
Relay_Log_Space: 450
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:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID:
Master_Info_File: F:\db-data\mysql\master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to upd
ate it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
很明显, 哥成功了,
当然有时候我们也会失败,那样我们可以使用 start/stop savle 来改变 从机的状态 ,或者在 Last_SQL_Error 里找到错误日志
双机互备模式。
如果在A加入slave设置,在B加入master设置,则可以做B->A的同步。
注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave start
重起AB机器,即可实现双向的热备。
MySQL数据库双机热备份的更多相关文章
- [转]MySQL数据库的热备份
一.系统环境描述: 1.两台数据库服务器,A和B: 2.当前A正在使用,将作为主服务器,B为准备用来做备用数据库服务器: 3.要进行热备份的数据库中含有类型为MyISAM ...
- MySQL数据库双机热备------主-主备份配置
MySQL数据库双机热备------主-主备份配置 实验环境: 主1数据库 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35 主2数据库192.168.1.2 Wi ...
- MySQL数据库的热备份和冷备份
冷备份(off, 慢, 时间点上恢复)冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库.冷备份是将关键性文件拷贝到另外位置的一种说法.对于备份数据库信息而言,冷备份是最 ...
- ubuntu上的mysql数据库双机备份设置
配置环境: myslq 5.5.3 + ubuntu server 12.04 一.配置MySQL主服务器(192.168.0.1) 1.增加一个账号专门用于同步 1 mysql>grant r ...
- MySQL双机热备份配置
双机热备份,即能够把主数据库中所有的数据同时写到备份的数据库中,从而实现MySQL数据库的热备份. MySQL Replication是MySQL提供的一种主从备份的机制,并且整个复制备份过程是异步进 ...
- MySQL 数据库通过日志恢复
http://blog.csdn.net/hanxin1987216/article/details/5976856 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选 ...
- Mysql数据库的主从与主主
前言: 首先,我们得知道我们为什么要做数据库的主从与主主,而后,再讨论他们的优劣与特点:为什么要做主从呢?因为Mysql数据库没有增量备份的机制,当数据量太大的时候备份是个难以解决的问题.但是mysq ...
- MySQL双机热备份
系统: CentOS release 6.6 (Final) MySQL: mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) ...
- MySQL数据库配置主从服务器实现双机热备
转自:http://www.cnblogs.com/cchun/p/3712637.html 一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168 ...
随机推荐
- sql server实用工具sql prompt的安装与注册
说起 sql prompt ,相信一直在sql server 领域摸爬滚打的技术人员们,并不陌生. 它是一款拥有SQL智能提示功能的SQL ServerVS插件.SQL Prompt能根据数据库的对象 ...
- html5的自定义data-*属性和jquery的data()方法的使用示例
人们总喜欢往HTML标签上添加自定义属性来存储和操作数据. 但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它 ...
- JS 提示框 alert()、confirm()、prompt()的三者的区别
使用消息框 使用警告.提示和确认 可以使用警告.确认和提示消息框来获得用户的输入.这些消息框是 window 对象的接口方法.由于 window 对象位于对象层次的顶层,因此实际应用中不必使用这些消息 ...
- 从0开始学习react(二)
今天,开始学习第二节!!! 工欲善其事,必先利其器 react推荐我们使用webpack来打包文件,那么我们就用吧!(其实真心不想用啊) 至于好处网上写的天花乱坠的,大家自行解决啊... 这节主要就学 ...
- 10 个超酷的 HTML5/CSS3 应用及源码
1.CSS3密码强度验证表单,码速表样式 我们在网站上注册会员时,输入一个强大较大的密码会大大增加帐号安全性,那么什么样的密码才比较安全呢?这款CSS3密码强度验证表单插件可以提示你当前输入密码的安全 ...
- YCM的安装与配置
花了好几天的时间,总算把YCM装上了.期间遇到了各种问题,主要还是因为刚进linux,对linux环境不熟, 命令资料等查了半天.当然,YCM也普遍被认为是一种安装配置复杂,但使用起来超简单的插件. ...
- IntelliJ IDEA+Tomcat+Nginx运行git项目
1.克隆Git项目到本地 (1)设置Git工具路径:file>settings>Version Control>Git (2)设置GitHub账户:file>settings& ...
- DevExpress navBarControl 和 xtraTabbedMdiManager实现浏览器标签页效果
一:navBarControl 属性设置 工具箱中的Navigation & Layout选项卡下找到NavBarControl,拖到窗体中 工具箱中添加2个imageCollection.分 ...
- 使用awstats分析iis站点的日志
环境:win7 + iis7 + perl(ActivePerl-5.20.1.2000) + awstats 7.3 一.找到iis日志所在目录 建议全部都打勾 二.安装perl AWStats是p ...
- UE4 将本地图片转成UTexture2D 在runtime显示
UFUNCTION(BlueprintCallable, Category = "TextureFromDisk") static class UTexture2D* GetTex ...