美文网首页
MYSQL主从复制-搭建到实现

MYSQL主从复制-搭建到实现

作者: 晏子小七 | 来源:发表于2018-03-22 14:08 被阅读34次

1.本人选择的是MYSQL5.5的版本rpm包在linux上安装的mysql:


TIM图片20180322132949.png

mysql安装完成后先配置my.cnf
由于权限问题,这里直接使用skip-grant-tables
注意:主从机器的my.cnf中的server_id不能一样!!!(我找了半天原因)
log-bin=mysql-bin 开启二进制日志

       注意:二进制日志必须开启,因为数据的同步实质上就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍。

2.环境说明:
两台linux虚拟主机

 Linux版本CentOS6.6、MySQL 5.5

 ip:192.168.1.92(主)、192.168.1.100(从)

3.开始构建主从复制:
第一步:

        在192.168.1.92(主)中创建一个192.168.1.100(从)主机中可以登录的MySQL用户

        用户:user100

        密码:123456

        mysql>GRANT REPLICATION SLAVE ON *.* TO ‘user100’@’192.168.1.100’ IDENTIFIED BY ‘123456’;

        mysql>FLUSH PRIVILEGES;

        第二步:

        查看192.168.1.92(主)MySQL服务器二进制文件名与位置

        mysql>SHOW MASTER STATUS;
TIM图片20180322133651.png

注意:如果主机的数据库不是新安装的情况下,这里的mysql-bin.0000xx,可能不是这个,此时需要清空二进制日志,也就是初始化:在mysql命令行执行:RESET MASTER;即可,执行完后重新查看。

第三步:

        告知二进制文件名与位置

        在192.168.1.100(从)中执行:

mysql>CHANGE MASTER TO

                 >MASTER_HOST=’192.168.1.92’,

                 >MASTER_USER=’user100’,

                 >MASTER_PASSWORD=’123456’,

                 >MASTER_LOG_FILE=’mysql-bin.000001’,

                 >MASTER_LOG_POS=107;

如下图:


TIM图片20180322134258.png

完成配置!
4、测试主从复制是否成功
在192.168.1.100(从)中

        mysql>SLAVE START;   #开启复制

        mysql>SHOW SLAVE STATUS\G   #查看主从复制是否配置成功
TIM图片20180322133651.png

当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常

测试完毕!
实际测试:登陆192.168.1.92(主)mysql

说明:
Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件
Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令。

192.168.1.92主MySQL操作:

        mysql>create database aa;

        mysql>use aa;

        mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id));

        mysql>show databases;

        mysql>show tables;
TIM图片20180322135742.png

192.168.1.100(从
)从MySQL操作:

        mysql>show databases;

        mysql>show tables;
TIM图片20180322135742.png

由上面两个结果图可得知,两主机达到了数据同步。主从复制的配置完成。
注意:
可能会出现的问题总结:

问题1.MySQL主从同步故障
Slave_SQL_Running: No
一般是事务回滚造成的:
解决办法一:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
解决办法二、
首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值
进入master
mysql> show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 | | |
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
然后到slave服务器上执行手动同步

如果还是出现,可以重复执行解决方法一!意思就是跳过错误,即可!(从机在拿主机的数据时,出现了sql错误导致的)

问题2:Mysql提示you need the SUPER privilege for this operation

这是权限问题,解决办法:
解决办法:
修改mysql登录设置
vi /etc/my.cnf
在[mysqld]段中加入 skip-grant-tables
保存之后重启mysql服务
service mysqld restart

相关文章

网友评论

      本文标题:MYSQL主从复制-搭建到实现

      本文链接:https://www.haomeiwen.com/subject/zwlaqftx.html