聊聊MySQL主从数据库同步的那些事儿
在linux服务器下测试:主(master)服务器IP:219.223.5.105(对应内网IP:192.168.1.75)从(slave)服务器IP:219.223.5.104(对应内网IP:192.168.1.74)一、修改主服务器master[mysqld]log-bin=mysql-bin //[必须]启用二进制日志server-id=104 //[必须]服务器唯一ID,默认是1,一般取IP最后一段二、修改从服务器slave[mysqld]log-bin=mysql-bin //[必须]启用二进制日志server-id=105 //[必须]服务器唯一ID,默认是1,一般取IP最后一段三、重启两台服务器的mysql104: service mysqld restart;105:service mysqld restart;四、赋予MySQL远程登录权限在主服务器master(104)上操作:mysql -uroot -proot123mysql > GRANT REPLICATION SLAVE ON *.* to ‘mysync’@’%’ identified by ‘password’;mysql > FLUSH privileges;//其中*.*代表所有权限,mysync代表账号,password代表密码,’%’代表所有客户端都可以连接。修改后需要刷新权限。mysql> select user,host,password from mysql.user;
host值为%,代表可以是任何客户端。mysql> show master status;
这两个值要记住,在配置slave时,需要使用到。五、配置从服务器mysql > mysql -uroot -proot123;mysql> change master to
-> master_host=’192.168.1.74′, #主服务器的IP
-> master_user=’mysync’, #主服务器的连接用户名
-> master_password=’mysync’, #主服务器的连接密码
-> master_log_file=’mysql-bin.000001′, #对应上面截图中的File
-> master_log_pos=1743; #对应上面截图中的Position启动从服务器同步进程:Mysql>start slave; 六、检查从服务器功能状态mysql> show slave status\G 如下,Slave_IO_running:Yes Slave_SQL_running:Yes则代表成功,否则任何其他状态都是失败
到这里,主从配置完毕。七、验证主从效果主服务器上的操作
在主服务器上创建数据库xdmysql> create database xd;Query Ok, 1 row affected (0.01 sec)在主服务器上创建表student mysql> create table student (name varchar(256),age int,sex varchar(256));Query Ok, 1 row affected (0.00 sec)在主服务器上的表student 中插入记录mysql> insert into student values(‘wangming’,18,’f’); insert into student values(‘xiaobai’,20,’m’);Query Ok, 2 row affected (0.00 sec)在从服务器上查看
mysql> show databases;查看student表里的数据:
中间遇到的一些问题:1.如果主从数据库的表结构不一致,会出现问题。2.Slave_SQL_Running: No mysql同步故障解决方法具体见下面链接:http://kerry.blog.51cto.com/172631/277414/3.单表同步 在slave服务器配置: replicate-do-table=xd.student 多张表则配置多个replicate-do-table 复制某些表(可用匹配符)
replicate-wild-do-table=tablename%