- 环境
主服务器IP:192.168.0.1
从服务器IP:192.168.0.2
主从数据库版本相同,或从比主版本高 - 主库配置
修改my.cnf文件如下:
server-id = 1 log-bin=mysql-bin #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可 binlog-do-db=test #不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可 binlog-ignore-db=mysql
创建备份用户
grant replication slave on *.* to slave@192.168.0.2 identified by 'password';
显示主库信息
记录File和Position,从库设置将会用到
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 106 | test | mysql | +------------------+----------+--------------+------------------+
- 导出主库:
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p test > test.sql
导入到从库:
mysql>source test.sql
- 从库配置
修改my.cnf文件如下:#此处与主库不同, required unique id between 2 and 2^32 - 1 server-id=2 log-bin=mysql-bin replicate-do-db=test #需要备份的数据库名 replicate-ignore-db=mysql #忽略的数据库 #同步自动跳过更新,与主键冲突错误 slave_skip_errors=1032,1064 #如果从服务器发现主服务器断掉,重新连接的时间差(秒) master-connect-retry=60 #MySQL5.5之后的注掉以下四行 master-host=192.168.0.1 master-user=slave master-password=password master-port=3306
设置同步
slave stop;
CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='slave',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=106;
slave start;
显示从库信息
其中 Slave_IO_Running 和 Slave_SQL_Running 两列的值都为 "Yes",表明 Slave 的 I/O 和 SQL 线程都在正常运行。SHOW SLAVE STATUS\G;
- 如果不都为Yes,可以查看MySQL正在运行的线程,
主库:
mysql>show processlist; slave | 192.168.0.2:52493 | NULL | Binlog Dump | 0 | Master has sent all binlog to slave; waiting for binlog to be updated
- 修改主库信息,检查从库是否正常同步。
MySQL主从备份
最新推荐文章于 2024-07-13 18:10:19 发布