MySQL主从同步

主:192.168.110.13

从:192.168.110.14


#配置主mysql
vim /etc/my.cnf
server-id=13      #服务器唯一ID,默认是1,一般取IP最后一段
log-bin=mysql-bin
service mysql restart

#建立同步用户
grant replication slave on *.* to 'replication'@'%' identified by "replication";
flush privileges;

reset master;
unlock tables;

show master status;      #查看当前binlog日志,和日志位置
PS:注意查看File和Position的值

 
#配置从mysql
vim /etc/my.cnf
server-id=14      #服务器唯一ID,默认是1,一般取IP最后一段
log-bin=mysql-bin
service mysql restart

#在从库机器上连接主库进行测试,如果能够连接上表示之前用户名建立是成功的
mysql -ureplication -preplication -h 192.168.110.13

#使用mysqldump将主库进行完整的备份,再把相应的备份导入到从库中
mysqldump --all-database > dbbackup.sql
#将备份文件复制到从服务器上,恢复进从服务器
mysql -uroot -p < dbbackup.sql

#配置从mysql的slave
mysql> change master to 
       -> master_host='192.168.110.13',      #主服务器的IP地址或虚拟IP地址
       -> master_user='replication',                #同步数据库的用户
       -> master_password='replication',                #同步数据库的密码
       -> master_log_file='binlog.XXXXX',                #主服务器二进制日志的文件名(File)
       -> master_log_pos=XXXXX;                     #日志文件的开始位置(Position)
slave start;      #启动从mysql复制功能
slave stop;      #关闭从mysql复制功能
 
show slave status\G      #显示从库状态信息

 
ERROR: 
No query specified
\G后面不需要再加分号

#以下参数为yes表示成功
Slave_IO_Running:yes
Slave_SQL_Running:yes

#主从复制测试:在master服务器上创建库和表,然后再插入记录,再登录到slave服务器,查看是否也建立一致的库和表以及记录
(1)在master服务器上创建库和表并插入数据

create database demo_db;
use demo_db;
create table demo_tb(id int(5),name char(10));
insert into demo_tb values(01,'demo01');
(2)登录slave服务器查看
show databases;
use demo_db;
show tables;
select * from demo_tb;

#如果当前的从库以前曾经与其他服务器建立过主从关系,可能会发现即使在my.cnf文件中更改了主服务器的位置,但是MySQL仍然在试图连接就旧的主服务器的现象。发生这种问题的时候,可以通过清除master.info这个缓存文件或者在mysql中通过命令来进行设置,这个文件位于数据文件存放目录里。
1、直接删除master.info文件,然后重新启动服务
2、mysql命令方法
如果不方便重新启动服务的话,那么就只能使用mysql命令来帮助你做到。
(1)首先登录到主服务器上,查看当前服务器状态

mysql> show master status\G;
(2)记录下File和Position的值。然后登录从服务器
mysql> slave stop;
mysql> change master to
       -> master_host='master_host_name',           #主服务器的IP地址
       -> master_user='replication_user_name',           #同步数据库的用户
       -> master_password='replication_password',      #同步数据库的密码
       -> master_log_file='recorded_log_file_name',      #主服务器二进制日志的文件名(前面要求记录的参数)
       -> master_log_pos=recorded_log_position;      #日志文件的开始位置(前面要求记录的参数)
mysql> slave start;

你可能感兴趣的:(MySQL主从同步)