手把手教你配置MySQL主从同步

Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。

MySQL支持的复制类型:

(1).基于语句的复制: 在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。
(2).基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
(3).混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

实验环境 (操作系统均为CentOS6.8)

  • 主数据库:192.168.100.10
  • 从数据库:192.168.100.20

1. 安装启动数据库,并设置密码

yum -y install mysql mysql-server mysql-devel
service mysqld restart   #启动数据库
mysqladmin -u root password '123456'   #设置root用户密码

2.修改主库my.cnf主要设置个不一样的ID,以及同步的数据库的名字,我一般用vim 来完成,vim /etc/my.cnf 在[mysqld]中加入内容如下

server-id=1  #添加一个唯一的id
log-bin=binlog #启用日志
port=3306 
重启服务使配置生效
service mysqld restart

3.登录主库赋予从库权限账号,允许用户在主库上读取日志(用户名:admin,密码:123456)

mysql -uroot -p123456
grant replication slave on *.* to 'admin'@'192.168.100.20' identified by '123456';

4.锁主库表,显示主库信息

flush tables with read lock;
显示主库信息
show master status;
mysql> show master status; 
+---------------+----------+--------------+------------------+ 
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+---------------+----------+--------------+------------------+ 
| binlog.000002 |      106 | haocheng   |                  | 
+---------------+----------+--------------+------------------+ 
1 row in set (0.00 sec) 
(记录file、position,从库设置将会用到)

5.修改从库my.cnf ,如下:

vim /etc/my.cnf
[mysqld]
#slave
server-id=2
#master-host=192.168.100.10
#master-user=admin
#master-password=123456
(注释内容为了方便以后管理)
重启服务使配置生效
service mysqld restart

6.在从库上设置同步

mysql -u root -p123456
mysql>slave stop;
mysql>change master to master_host='192.168.100.10',master_user='admin',master_password ='123456',master_log_file='binlog.000002',master_log_pos=106
mysql>slave start;

7.查看从库状态

mysql>show slave status\G;
Slave_IO_Running:YES
Slave_SQL_Running:YES  #当这两条语句均为YES则为同步配置成功

8.最后进行测试,在主库创建数据库,从库成功进行同步。

你可能感兴趣的:(手把手教你配置MySQL主从同步)