对于服务器来说,数据丢失是最要命的事情了,系统崩溃,硬盘物理损坏都可能造成无法挽回的损失。谷奥数据库的备份也一直是我心头之病,最近有空架设了一台 slave 服务器并且在 slave 服务器上用 crontab 保留 snapshot,数据安全性应该有了比较大的改善了。简单配置过程如下,环境为 mysql 5.0 / 5.1 + FreeBSD 8.1
master 服务器,首先修改 my.cnf:
sudo vi /var/db/mysql/my.cnf
修改或加入如下行,binlog-ignore-db 可以根据自己实际情况修改
log-bin=mysql-bin
server-id = 1
binlog-ignore-db=mysql,information_schema
重新启动 mysql-server
sudo /usr/local/etc/rc.d/mysql-server restart
进入 mysql console,加 slave 用户:
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@SLAVE_IP_ADDRESS IDENTIFIED BY ‘PASSWORD’;
mysql> FLUSH PRIVILEGES;
查看 master 的数据,记得先锁定表格:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
记下其中的 File 文件名和 Position 执行位置,下一步导出 master 的数据,推荐使用 tar 直接打包然后解压到 slave 的数据库目录内。tar 或者 mysqldump 完毕后就可以解锁表格了。
mysql> UNLOCK TABLES:
接下来进行 slave 设置,修改 my.cnf 设置
sudo vi /var/db/mysql/my.cnf
找到 slave 段,增加/修改如下行(不要忘了去掉每行开头的 #)
server-id=2
master-host=MASTER.IP.ADDRESS
master-user=slave_user
master-password=PASSWORD
master-connect-retry=60
replicate-ignore-db=mysql,information_schema
skip-start-slave
重新启动 mysql-server
sudo /usr/local/etc/rc.d/mysql-server restart
登录 mysql shell 加入 master 信息:
mysql> CHANGE MASTER TO MASTER_HOST=’MASTER_IP_ADDRESS’, MASTER_USER=’slave_user’, MASTER_PASSWORD=’PASSWORD’, MASTER_LOG_FILE=’File 文件名’, MASTER_LOG_POS=Position 执行位置;
mysql> START SLAVE;
设置完成,检查一下状态:
mysql> show slave status;
最后不要忘了修改一下 my.cnf ,注释掉 skip-start-slave 这行,然后重启 mysql 服务器。
参考:
Pingback: mysqlbinlog Error in Log_event 原因及其解决 | gkp's post
Pingback: mysqlbinlog Error in Log_event 原因及其解决