MySQL 主从复制

来源:互联网 发布:java 安卓获取当前时间 编辑:程序博客网 时间:2024/05/05 18:47

作用:  
备份冗余:主服务器宕机时,可以快速无缝切换到从服务器 
负载均衡:可以在从服务器上,执行查询操作,备份数据 
1.主服务器 
a) 修改my.cnf: 
log-bin=mysql-bin 
server-id=1 
b) 设置授权账户: 
mysql> grant all on *.* to user1@192.168.10.2 identified by 456 
c) 导出数据: 
#/usr/bin/mysqldump -uroot -p123 test -l -F> '/tmp/test.sql'  
2.从服务器 
a) 导入主服务器的数据 
#/usr/bin/mysql -uroot -prootroot test < /tmp/test.sql 
b) 修改my.cnf 
master-host=192.168.10.1 
master-user=user1 
master-password=123 
master-port=3306 
log-bin=mysql-bin 
server-id=2 
c) 重启mysqld 
# pkill mysqld 
# /usr/loca/mysql/bin/mysqld_safe --user=mysql & 
d) 查看slave状态 
mysql> show slave status\G 
localhost-relay-bin.00000x  从服务器生成的bin日志 
slave_IO_Running:yes        出现这两行,说明从服务器设置成功  
slave_SQL_Running:yes 
3.测试 
写一段php语句,对主服务器执行增删改操作,对从服务器执行查询操作. 
从数据库常用命令: 
start slave 
stop slave 
show slave status 
show master logs 
change master to //动态改变主数据库到 
show processlist //查看从数据库进程 
从数据库无法同步的解决办法: 
a) mysql> slave stop; 
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 
mysql> slave start; 
b) 或者手工同步: 
mysql> change master to 
     > master-host="192.168.10.1", 
     > master-user="user1", 
     > master-password="456", 
     > master-port=3306, 
     > master_log_file="mysql-bin.000003", 
     > master_log_pos=98; 
mysql> slave start; 
通过bin-log恢复数据的方法: 
# /usr/local/mysql/bin/mysqlbinlog --no-defaults mysql-bin.000002 | /usr/local/mysql/bin/mysql -uroot -proot test 
在 mysql-bin.000002 后面添加其他参数,可以精确化: 
--start-position="193" 
--stop--position="306" 
--start-date="2012-02-04 21:17:50" 
--stop-date="2012-02-05 21:17:50" 
与bin-log有关的操作命令: 
mysql> flush logs; //此时就会多一个最新的bin-log日志 
mysql> show master status; //查看最后一个bin日志 
mysql> reset master; //清空所有的bin日志 
mysql> show variables like "%bin%";  //查看bin-log状态(开启/关闭)

原创粉丝点击