您的位置:首页 > 数据库 > MySQL

MySQL主从同步

2013-01-16 11:40 253 查看
主:192.168.110.13[/b]

从:192.168.110.14[/b]

#配置主mysql[/b]

vim /etc/my.cnf

server-id=13 #服务器唯一ID,默认是1,一般取IP最后一段[/b]

log-bin=mysql-bin

service mysql restart

#建立同步用户[/b]

grant replication slave on *.* to 'replication'@'%' identified by "replication";

flush privileges;

reset master;

unlock tables;

show master status; #查看当前binlog日志,和日志位置[/b]
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主从同步