主机:
[[email protected] ~]# mysql -usystem -p123456
mysql> create database HA;
mysql> use HA;
mysql> create table T1(id int,name varchar(20));
service mysqld stop 停库锁表
配置my.cnf:
vim /etc/my.cnf
vim /etc/my.cnf
log-bin=mysql-bin-master #启用二进制日志
server-id = 1 #本机数据库ID 标示
binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库
重启mysql:
service mysqld restart
[[email protected] ~]# mysql -usystem -p123456
授权:
mysql> grant replication slave on *.* to [email protected] identified by "123456";
mysql> flush privileges;
查看状态信息:
mysql> show master status;
mysql> show binlog events\G
同步前要保证两台机器数据一致。
[[email protected] ~]# mysqldump -usystem -p123456 HA >HA.sql
[[email protected] ~]# scp HA.sql [email protected]:/root/
从机:
[[email protected] ~]# mysql -usystem -p123456
mysql> create database HA;
mysql -usystem -p123456 HA<HA.sql
修改从服务器配置文件:
[[email protected] ~]# vim /etc/my.cnf
server-id = 2
重启mysqld
[[email protected] ~]# service mysqld restart
[[email protected] ~]# mysql -usystem -p123456
mysql>change master to master_host=‘192.168.31.130‘,master_user=‘slave‘,master_password=‘123456‘;
mysql> start slave;
mysql> show slave status\G 查看状态
Slave_IO_Running :一个负责与主机的io通信
Slave_SQL_Running:负责自己的slave mysql进程
再到主服务器上查看状态:
mysql> show processlist \G
主机:
mysql> insert into T1 values(1,‘ccc‘);
Query OK, 1 row affected (0.01 sec)
mysql> select * from T1;
+------+------+
| id | name |
+------+------+
| 1 | qqq |
| 1 | ccc |
+------+------+
2 rows in set (0.00 sec)
从机:
mysql> select * from T1;
+------+------+
| id | name |
+------+------+
| 1 | qqq |
| 1 | ccc |
如果遇到主从不同步,看一下主从bin-log的位置,然后再同步。
从服务器执行MySQL命令下:
mysql> slave stop; #先停止slave服务
mysql> change master to master_log_file=‘mysqllog.000004‘ ,master_log_pos=106;
#根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归,达到同步的效果
mysql>slave start; #启动从服务器同步服务
mysql> show slave status\G; #用show slave status\G;看一下从服务器的同步情况
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果都是yes,那代表已经在同步