更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn)
附简要原理图:
三、主从配置需要注意的地方:
四、主从配置的简要步骤:
附简要示意图:
(6).开启同步,查看状态
[root@client102 scripts]# vim /etc/my.cnf # 修改配置文件里,下面两个参数: # 设置server_id,一般建议设置为IP,或者再加一些数字 server_id =102 # 开启二进制日志功能,可以随便取,最好有含义 log-bin=mysql3306-bin
# 我这里是多实例mysql,所以启动是这样的,如果大家是单实例的,就直接启动就可以[/etc/init.d/mysqld start] [root@client102 scripts]# mysqld_multi start 3306 # 登陆mysql 服务器 [root@client102 scripts]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p # 授予用户权限用于主从同步 mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong'; Query OK, 0 rows affected (0.00 sec) # 刷新授权表信息 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) # 查看position 号,记下position 号(很重要,从机上需要这个position号和现在的日志文件,我这里是414和mysql3306-bin.000001) mysql> show master status; +----------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------------+----------+--------------+------------------+-------------------+ | mysql3306-bin.000001 | 414 | | | | +----------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
# 临时锁表 mysql> flush tables with read lock; # 我这里实行的全库备份,在实际中,我们可能只同步某一个库,可以只备份一个库 # 新开一个终端,执行如下操作 [root@client102 data]# mysqldump -p3306 -uroot -p -S /usr/local/mysql/mysqld3306.sock --all-databases > /tmp/mysql.sql # 解锁 mysql> unlock tables; # 将备份的数据传送到从机上,用于恢复 [root@client102 data]# scp /tmp/mysql.sql [email protected]:/tmp
[root@client100 ~]# vim /etc/my.cnf # 设置server_id,一般建议设置为IP,或者再加一些数字 server_id =100
# 启动数据库 [root@client100 ~]# mysqld_multi start 3306 # 还原主DB server备份的数据 [root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql
[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p mysql> change master to -> master_host='192.168.1.102', -> master_user='kongzhong', -> master_password='kongzhong', -> master_port=3306, -> master_log_file='mysql3306-bin.000001', -> master_log_pos=414; #/* 下面是一部分注解: #/* 指定主DB server的IP地址 master_host='192.168.1.102' #/* 指定用于同步的用户[这个就是我们在主DB server授权的用户] master_user='kongzhong' #/* 指定用于同步的用户的密码 master_password='kongzhong' #/* 指定主DB server的端口[下面一个例子,可以重点看这个] master_port=3306 #/* 指定从DB server 从哪个日志文件开始读[在主DB server上使用show master status查看到日志] master_log_file='mysql3306-bin.000001' #/* 指定 从哪个POSITION号开始读 master_log_pos=414 # 开启主从同步 mysql> start slave; # 查看主从同步状态 mysql> show slave status\G; # 主要看以下两个参数:[这两个参数如果是yes就表示主从同步正常] Slave_IO_Running: Yes Slave_SQL_Running: Yes