MySQL主从同步

主:192.168.110.13

从: 192.168.110.14

配置主MySQL

#配置主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;

查看当前binlog日志和日志位置

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


spacer.gif101013603.png

配置从MySQL
#配置从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     #显示从库状态信息

spacer.gif101040428.png

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主从同步)