十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。
我们提供的服务有:成都网站制作、成都网站设计、外贸营销网站建设、微信公众号开发、网站优化、网站认证、孙吴ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的孙吴网站制作公司
mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。
数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(一般是my.cnf)
在unix环境下在/etc/mysql/my.cnf
或者在mysql用户的home目录下面的my.cnf。
window环境中,如果c:根目录下有my.cnf文件则取该配置文件。当运行mysql的winmysqladmin.exe工具时候,该工具会把c:根目录下的my.cnf
命名为mycnf.bak。并在winnt目录下创建my.ini。mysql服务器启动时候会读该配置文件。所以可以把my.cnf中的内容拷贝到my.ini文件中,用my.ini文件作为mysql服务器的配置文件。
设置方法:
设置范例环境:
操作系统:window2000
professional
mysql:4.0.4-beta-max-nt-log
A
ip:10.10.10.22
B
ip:10.10.10.53
A:设置
1.增加一个用户最为同步的用户帐号:
GRANT
FILE
ON
*.*
TO
backup@''10.10.10.53''
IDENTIFIED
BY
‘1234’
2.增加一个数据库作为同步数据库:
create
database
backup
B:设置
1.增加一个用户最为同步的用户帐号:
GRANT
FILE
ON
*.*
TO
backup@''10.10.10.22''
IDENTIFIED
BY
‘1234’
2.增加一个数据库作为同步数据库:
create
database
backup
主从模式:A-B
A为master
修改A
mysql的my.ini文件。在mysqld配置项中加入下面配置:
server-id=1
log-bin
#设置需要记录log
可以设置log-bin=c:mysqlbakmysqllog
设置日志文件的目录,
#其中mysqllog是日志文件的名称,mysql将建立不同扩展名,文件名为mysqllog的几个日志文件。
binlog-do-db=backup
#指定需要日志的数据库
重起数据库服务。
用show
master
status
命令看日志情况。
B为slave
修改B
mysql的my.ini文件。在mysqld配置项中加入下面配置:
server-id=2
master-host=10.10.10.22
master-user=backup
#同步用户帐号
master-password=1234
master-port=3306
master-connect-retry=60
预设重试间隔60秒
replicate-do-db=backup
告诉slave只做backup数据库的更新
重起数据库
用show
slave
status看同步配置情况。
注意:由于设置了slave的配置信息,mysql在数据库目录下生成master.info
所以如有要修改相关slave的配置要先删除该文件。否则修改的配置不能生效。
双机互备模式。
如果在A加入slave设置,在B加入master设置,则可以做B-A的同步。
在A的配置文件中
mysqld
配置项加入以下设置:
master-host=10.10.10.53
master-user=backup
master-password=1234
replicate-do-db=backup
master-connect-retry=10
在B的配置文件中
mysqld
配置项加入以下设置:
log-bin=c:mysqllogmysqllog
binlog-do-db=backup
注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave
start
重起AB机器,则可以实现双向的热备。
测试:
向B批量插入大数据量表AA(1872000)条
A数据库每秒钟可以更新2500条数据。
1.mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现mysql数据库的热备份。
2.要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
数据备份是意见很重要的事情,对于 MySQL通常有热备份和冷备份两中,冷备份就是指停掉 MySQL服务然后备份数据文件,热备份就是在不停掉 MySQL服务的情况下进行备份。
MySQL 软件包提供了一个名为 mysqlhotcopy 的 Perl程序帮助我们完成热备份。
举例:mysqlhotcopy -uuser -ppass dbname backupdir
用法: /usr/bin/mysqlhotcopy db_name[./table_regex/] [new_db_name | directory]
参数:
-u, --user=# 用户名
-p, --password=# 密码
-h, --host=# 主机
-P, --port=# 端口
-S, --socket=# 套接字位置
--allowold 假如备份目标存在将其命名为 _oldXXXX再继续
--addtodest 假如备份目标存在直接添加新文件,不重命名
--keepold 不删除重命名为 _oldXXXX的文件
--noindices 不保留所有索引
--method=# 复制的方法 目前仅支持 cp
-q, --quiet 安静模式,除非发生错误
--debug 启动调试
-n, --dryrun 仅现实将要执行的动作但是不实际执行
--regexp=# 复制所有数据库名和指定内容正则匹配的数据库
--suffix=# 指定要复制的数据前缀
--checkpoint=# 将备份检测点插入到指定数据库的数据表中 形如:db.table
--flushlog 一旦所有标锁定就刷新日志
--resetmaster 重置binlog一旦所有的被锁定
--resetslave 重置 master.info一旦所有的被锁定
--tmpdir=# 指定临时目录而不是 /tmp
--record_log_pos=# 记录主从状态到指定数据库的表中 形如:db.table
--chroot=# 当执行 MySQL操作的时候chroot到指定目录
手动热备份 MyISAM引擎的数据库
我们通过 锁表-复制备份-解锁 的流程进行
# mysql命令
flush tables with read lock;
# 系统命令
cp -R /database/path/ /backup/path
# mysql命令
unlock tables;
可能遇到的错误:
Can’t locate DBI.pm in @INC
解决:
perl -MCPAN -e “install DBI”
perl -MCPAN -e “install DBD::mysql”
This entry was written by zpz, posted on 2013 年 1 月 18 日 at 上午 11:52, filed under mysql and tagged Mysql备份, Mysql数据备份. Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.
问题一:我们为什么需要备份 ?
问题二:我们该采用哪种备份方式 ?
问题三:备份时候考虑问题 ?
我们选用哪种备份 ?
下面是如何在CentOS 7 下进行备份的具体步骤:
然后进行安装xtrabackup
备注:
我们使用帮助查看innobackupex的帮助文档:
进行完整备份例子:
进行增量备份例子:
要我绑定微信,不想写,改天有时间再写
参考链接: