54SA.COM|专注于系统运维管理,为中国SA提供动力!
Getting online shouldn't be tough. $7.99 .COMs
系统管理员之家Banner
当前位置: 主页 > 信息化 > 数据库 >

主备机实现mysql5数据库同步

时间:2011-05-18 13:06来源:未知 编辑:admin


本文利用Mysql中的工具可以对数据进行实时的备份,并且不会影响服务的效率。

Mysql数据库版本:5.0

主机:
1) 编辑mysql的更新日志记录

# cp my-huge.cnf /var/db/mysql/my.cnf
# vi /var/db/mysql/my.cnf
修改/var/db/mysql/my.cnf文件,把

log-bin=mysql-bin改为log-bin=/usr/backups/mysql/mysql-bin
建立访问更新日志的路径:

# mkdir /usr/backups
# mkdir /usr/backups/mysql
# chown mysql:mysql /usr/backups/mysql
重启mysql服务,是配置生效:

# /usr/local/etc/rc.d/mysql-server.sh restart
这样数据库的更新日志就会放在/usr/backups/mysql目录中,我们下面就会使用它们。
为了方便更新,我们在/usr/local/rsyncd.conf中建立第二个同步节点:

[mysql]
path = /usr/backups/mysql/
comment = my blog mysql data
uid = mysql
gid = mysql
ignore errors
read only = yes
list = yes
auth users = abc
secrets file = /usr/local/etc/rsyncd.secrets
2)备份mysql数据库
# mysqldump -uroot -p mypassword testdb > /usr/backups/mysql/testdb.sql
其中mypassword是abc登陆mysql的密码,testdb是需要备份的数据库;

备机:
1)建立备份服务器的主数据库

# mkdir /root/mysql
# mysqladmin -uroot -ppassword create test
# rsync -azv rsync://abc@webserver/mysql /root/mysql –password-file=/etc/rsyncd/test.secrets
# mysql -uroot -p mypassword test db< /root/mysql/testdb.sql
到此,备份服务器已经建立了test数据库,而且内容为主服务器的内容。后面,我们只需要使用日志更新即可。
2)使用更新日志建立差异备份  设定计划任务(一天备份一次)。

# cd /etc/cron.daily
# vi mydata.cond
rsync -az rsync://abc@webserver/exblog /var/www/html/test –password-file=/etc/rsyncd/test.secrets >> /tmp/mydata.log
if [ $-eq 0 ]; then
echo `date` “rsync exblog data successfully!” >> /tmp/mydata.log
chown -R apache.apache /var/www/html/test
rsync -az rsync://abc@webserver/mysql /root/mysql –password-file=/etc/rsyncd/test.secrets >> /tmp/mydata.log
if [ $-eq 0 ]; then
echo `date` “rsync mysql data successfully!” >> /tmp/mydata.log
chown -R root.root /root/mysql
mysql -uabc -ppassword test < /root/mysql/test.sql
?if [ $? -eq 0 ]; then
echo `date` “exblog backup database recover ok!” >> /tmp/mydata.log
find /root/mysql -name “mysql-bin.0*”|xargs mysqlbinlog -d test|mysql -uabc -ppassword
if [ $? -eq 0 ]; then
echo `date` “test database bin log recover ok!” >> /tmp/mydata.log
fi
fi
fi
fi

[责任编辑:admin]


------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名:
最新评论 进入详细评论页>>