首页 > 代码库 > mysql 读写分离,主从同步 M-S 搭建
mysql 读写分离,主从同步 M-S 搭建
主机:
[root@ygy130 ~]# 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
[root@ygy130 ~]# mysql -usystem -p123456
授权:
mysql> grant replication slave on *.* to slave@192.168.31.131 identified by "123456";
mysql> flush privileges;
查看状态信息:
mysql> show master status;
mysql> show binlog events\G
同步前要保证两台机器数据一致。
[root@ygy130 ~]# mysqldump -usystem -p123456 HA >HA.sql
[root@ygy130 ~]# scp HA.sql root@192.168.31.131:/root/
从机:
[root@yu131 ~]# mysql -usystem -p123456
mysql> create database HA;
mysql -usystem -p123456 HA<HA.sql
修改从服务器配置文件:
[root@yu131 ~]# vim /etc/my.cnf
server-id = 2
重启mysqld
[root@yu131 ~]# service mysqld restart
[root@yu131 ~]# 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,那代表已经在同步
mysql 读写分离,主从同步 M-S 搭建