1.远程mysql服务器的设置
1.1 开复制备份的远程mysql帐号
可以使用phpadmin建立备份帐号,注意要指定帐号的ip地址,
复制还需要用到 REPLICATION SLAVE, REPLICATION CLIENT权限,要加上
1.2 设置openvpn加密通道
可以参照一般的openvpn的设置方法,主从服务器式,或者点对点的方式都可以,
这里不做详细介绍,可以参阅网上文档。
1.3 调整mysql服务器设置,生成binlog
在my.cnf中添加如下设置:
[mysqld]
slave-skip-errors = all
log-slave-updates #在本服务器的binlog中也存放其他的服务器的修改日志,否则,之存放本服务器的修改日志,
server-id = 1 #根据需要修改,不能跟参与复制的其他的mysql服务器相同
log_bin = /home/mysql/mysql-bin.log #binlog文件名,实际是mysql-bin.000xxx
#这2个设置是为了防止2台互相复制的服务器产生关键字段的冲突用的,
#如果他们用不同的偏移, 就可以实现一台服务器按照1,3,5,7..增加,
#另一台服务器按照个2,4,6,8..增加
#如果服务器的复制是单向的,就不需要这个2个设置项
auto_increment_increment = 2 #自动增加的字段每次步进是2
auto_increment_offset = 1 #自动增加的字段的偏移是1 ,
#保留100天的binlog ,
#如果binlog的数据量大, 并且不用保留这么多天,那么可以缩短
expire_logs_days = 100
max_binlog_size = 100M #单个binlog的大小
binlog_do_db = net #需要记录binlog的库明
binlog_do_db = news #需要记录的库名都列在这里.
binlog_do_db = wikidb
执行重启命令
/etc/init.d/mysql restart
1.4 关闭应用程序到mysql服务器的连接,并使用mysqldump导出每个库的完整的数据,并记录当前binlog的文件名和当前的文件偏移位置。
/etc/init.d/apache2 stop #关闭应用程序
mysqldump --host=127.0.0.1 -P3306 --add-drop-table -c \
--default-character-set=utf8 --allow-keywords --force \
--password=*** --user=root vpopmail |gzip>/tmp/vpopmail.sql.gz
显示binlog的文件名和偏移: ls /home/mysql/mysql-binlog* -l
-rw-rw---- 1 mysql mysql 12301207 2009-03-04 18:18 /home/mysql/mysql-bin.001943
binlog当前日志文件名为mysql-bin.001943 偏移为12301207