linux debian系统下配置mysql主从复制(同步):

时间:2022-09-21 12:37:23

主(master)服务器IP:219.223.5.100,从(slave)服务器IP:219.223.5.103
一、修改主服务器master
root@theyun:~# nano /etc/mysql/my.cnf
[mysqld]

server-id=103 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
log-bin=mysql-bin //[必须]启用二进制日志
二、修改从服务器slave
root@theyun:~# nano /etc/mysql/my.cnf

[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=102 //[必须]服务器唯一ID,默认是1,一般取IP最后一段

三、重启两台mysql服务 : service mysqld restart;

四、赋予MySQL远程登录权限
在主服务器master(102)上操作:
mysql -uroot -proot123
mysql > GRANT REPLICATION SLAVE ON . to ‘root’@’%’ identified by ‘password’;
mysql > FLUSH privileges;
# 其中.代表所有权限,root代表账号,password代表账户登录密码,’%’代表所有客户端都可以连接,或者写(219.223.5.103),修改后需要刷新权限。
mysql> select user,host,password from user;

host值为%,代表可以是任何客户端。

mysql> show master status;

这两个值要记住,在配置slave时,需要使用到。

五、配置从服务器
mysql > mysql -uroot -proot123;

mysql> change master to
-> master_host=’219.223.5.102’, #主服务器的IP
-> master_user=’root’, #主服务器的连接用户名
-> master_password=’123456’, #主服务器的连接密码
-> master_log_file=’mysql-bin.000001’, #对应上面截图中的File
-> master_log_pos=2336787; #对应上面截图中的Position
启动从服务器同步进程:

Mysql>start slave;
六、检查从服务器功能状态
mysql> show slave status\G

如下,Slave_IO_running:Yes
Slave_SQL_running:Yes
则代表成功,否则任何其他状态都是失败
到这里,主从配置完毕。

七、验证主从效果, 在主服务器上创建数据库yang
mysql> create database yang;
创建表student
mysql> create table student (name varchar(256),age int,sex varchar(256));
表student 中插入记录
mysql> insert into student values(‘wangming’,18,’f’);
insert into student values(‘xiaobai’,20,’m’);

在从服务器上查看
mysql> show databases;
查看student表里的数据: select * from student;

中间遇到的一些问题:
1.如果主从数据库的表结构不一致,会出现问题。
2.Slave_SQL_Running: No mysql同步故障解决方法
具体见下面链接:
http://kerry.blog.51cto.com/172631/277414/

【在slave服务器配置单独库,单独表的同步?】
在slave里编辑/etc/mysql/my.cnf中配置
replicate-do-db = dashboard #想要同步的数据库名,如果有多个,请设置多次
replicate-ignore-db = mysql #略过同步的数据库名,如果有多个,请设置多次
replicate-ignore-table = mysql #略过同步的数据库的表,如果有多个,请设置多次
replicate-wild-do-table=tablename% #同步某些表(可用匹配符)