#主机配置:
service mysqld stop
#配置my.cnf:
vim /etc/my.cnf
log-bin=mysql-bin-master #启用二进制日志
server-id = 1 #本机数据库ID 标示
binlog-do-db=sdgsfpgl #可以被从服务器复制的库。二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库
#重启mysql:
service mysqld restart
#授权: 授权从服务器,让从服务器能够通过slave账号进行复制的操作
mysql> grant replication slave on *.* to [email protected] (从)identified by "123456";
#查看状态信息:
mysql> show master status;
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------------+----------+--------------+------------------+
| mysql-bin-master.000001 | 259 | HA | mysql |
+-------------------------+----------+--------------+------------------+
#查看二进制日志:
ls /data/
#主要是通过这些信息来进行数据库还原
mysql> show binlog events\G;
#备机配置:
mysql> show variables like '%version%'; # --主备机的版本需要一致
#--验证定义的slave能否登录
mysql -uslave -p123456 -h 192.168.1.63
#数据导入到备库,保证主备数据库一致性
service mysqld stop
vim /etc/my.cnf
server-id = 2
#从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。
#如果是mysql5.1的配置,则添加如下内容
#如果不是mysql5.1,则不用添加文本框里面的内容
mysql> change master to master_host='192.168.1.63',master_user='slave',master_password='123456';
mysql> start slave;
mysql> show slave status \G;
Slave_IO_Running :一个负责与主机的io通信,如果这个故障,检查网络
Slave_SQL_Running:负责自己的slave mysql进程,如果这个故障,检查服务
- 排错:
#如果遇到主从不同步,看一下主从bin-log的位置,然后再同步。 mysql> show master status; ---主上查看
#从服务器执行MySQL命令下: mysql> slave stop; #先停止slave服务 mysql> change master to master_log_file=' mysql-bin-master.000001' ,master_log_pos= 9759; #根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归,达到同步的效果 mysql>slave start; #启动从服务器同步服务 mysql> show slave status\G; #用show slave status\G;看一下从服务器的同步情况 Slave_IO_Running: Yes Slave_SQL_Running: Yes 如果都是yes,那代表已经在同步 #重启从服务器,再查看状态: #停止从服务器 slave stop; #开启从服务器 slave start;
总结排错思路:
1、二进制日志没有开启
2、IPTABLES 没有放开端口
3、对应的主机 IP地址写错了
SQL线程出错
1、主从服务器数据库结构不统一
出错后,数据少,可以手动解决创建插入,再更新slave状态。
注:如果主上误删除了。那么从上也就误删除了。 #因此主上要定期做mysqldump备份。