mysql双机热备份

mysql双机热备份,第1张

mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。

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条数据。

数据备份是意见很重要的事情,对于 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.


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6178987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存