Mysql的主从同步设置
来源:互联网 发布:linux网络编程工作 编辑:程序博客网 时间:2024/05/21 06:13
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Mysql主从的优点有好多,容灾是一方面,现在单从备份的角度考虑配置主从设置。</span>
1. 因为使用已有的mysql,搭建不讲,以后有机会整理一些搭建的内容。
操作系统:CentOS release 4.3 (Final)
Mysql版本:Ver 14.14 Distrib 5.1.66
主服务器IP:10.57.122.60
从服务器IP:10.36.164.12
2. 在主服务器上创建同步账号:账号方面做了一些修改。
GRANT REPLICATION SLAVE,FILE ON *.* TO 'replication'@'10.36.164.12' IDENTIFIED BY '123456';FLUSH PRIVILEGES;
3. 从服务器文件配置。默认情况下为:/etc/my.cnf
server-id = 3## The replication master for this slave - requiredmaster-host = 主库机器## The username the slave will use for authentication when connecting# to the master - requiredmaster-user = <span style="font-family: Arial, Helvetica, sans-serif;">replication</span>## The password the slave will authenticate with when connecting to# the master - requiredmaster-password = 123456## The port the master is listening on.# optional - defaults to 3306master-port = #需要备份的数据库名 下面是指定需要备份的数据库replicate-do-db= #不同步的库 <span style="font-family: Arial, Helvetica, sans-serif;">下面是指定不做备份的数据库</span>binlog-ignore-db =4. SLAVE设置验证登陆MASTER
# mysql -h10.57.122.60 -P3306 -ureplication -p123456mysql> show grants for replication;+-------------------------------------------------------------------------------------------------------------------------+| Grants for replication@% |+-------------------------------------------------------------------------------------------------------------------------+| GRANT FILE, REPLICATION SLAVE ON *.* TO 'replication'@'%' IDENTIFIED BY PASSWORD '*1827DC630CAEB1E997DB2B2F2CC94EFD9C431477' |+-------------------------------------------------------------------------------------------------------------------------+1 row in set (4.10 sec)5. 将主库DUMP下来给从库用
这里我是用的命令是:
mysqldump -ureplication -p123456 --lock-tables --events --triggers --routines --flush-logs --master-data=2 --databases db1 db2 db3 > ~/db.sql再然后拷贝数据到slave机器,执行
mysqldump -ureplication -p123146 -h127.0.0.1 db1 db2 db3 < db.sql此处遇到一些问题,刷屏太快,没来得及保存,是用如下的方式
mysql -ureplication -p123456 -h127.0.0.1 -P3306 < db.sql
ERROR at line 138: Unknown command '\''.但这里也会报一个错误,这种情况是因为编码的关系,简单查看之后,是用如下的命令得以解决。
mysql -ureplication -p123456 -h127.0.0.1 -P3306 --default-character-set=utf8 < db.sql
6. 在从服务器设置从主服务器同步
使用grep命令查找到二进制日志的名称以及位置
user@host:~ $grep -i "change master" db.sql-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000083', MASTER_LOG_POS=106;生成change master语句,然后在slave上执行,
STOP SLAVE; CHANGE MASTER TO MASTER_HOST='10.57.122.60',MASTER_USER='replication',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000083', MASTER_LOG_POS=106;START SLAVE;
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log细看log如下:
150821 21:30:24 [ERROR] Failed to open the relay log './mysql-relay-bin.000197' (relay_log_pos 88904539)
150821 21:30:24 [ERROR] Could not find target log during relay log initialization
在网络上查找原因:该服务器之前做过主从复制,中途修改过my.cnf配置文件,重启mysql之后,binlog文件名和relay-log文件名已经改变,所以不能再从之前的relay-log复制了。
解决方法:
mysql> reset slave;Query OK, 0 rows affected (0.00 sec)再然后执行上面的CHANGE MASTER成功执行。
这样就完成了主从同步的搭建,最后使用SHOW SLAVE STATUS\G;查看Slave_IO_Running和Slave_SQL_Running的状态,如果都为Yes,就大功告成了。
接下来还需要做的一件事情是做主库和备库数据一致性的验证。后续待补充
注:本文为参考文章一的不完全复制,主要记录在该过程中自己遇到的问题以及解决方法。
参考文章:1. http://blog.chinaunix.net/uid-20639775-id-3254611.html
2. http://www.jb51.net/article/27221.htm
3. http://blog.chinaunix.net/uid-16844903-id-2448446.html
- Mysql的主从同步设置
- mysql 主从同步设置
- mySql主从同步设置
- mysql主从同步设置
- mysql 主从同步设置
- MySQL主从同步设置
- MySQL 主从同步设置
- [Mysql]主从同步的快速设置
- 同机MySQL主从同步设置
- mysql主从同步快速设置
- Mysql同步和主从设置
- mysql主从同步快速设置
- MySQL数据库设置主从同步
- MySQL数据库设置主从同步
- MySQL数据库设置主从同步
- MySQL数据库设置主从同步
- MySQL数据库设置主从同步
- MySQL数据库设置主从同步
- 杂感
- sql反模式读书笔记
- Linked List 总结
- 分享的Intent实现
- 高效服务器-1
- Mysql的主从同步设置
- hdoj 1010Tempter of the Bone【DFS】
- 优化反射性能的总结(下)
- 使用Reader模拟实现BufferedReader效果
- KMP算法
- iOS(总结)全局调试
- QT读写配置文件(.ini)
- 高效服务器-2
- 【面向代码】学习 Deep Learning(一)Neural Network