美文网首页
MySQL主从复制原理

MySQL主从复制原理

作者: Lin_haobin | 来源:发表于2017-12-30 20:01 被阅读0次

实现mysql主从在线同步

一.工作环境及条件

主数据库:172.25.0.254

从数据库:172.25.0.11

操作系统:RHRL7

MySQL版本:mariadb-5.5.35

安装MYSQL(yum源安装)

主数据库

[root@master ~]# yum clean all

[root@master ~]# yum -y install mariadb*

从数据库

[root@slave ~]# yum clean all

开启mariadb服务

[root@master ~]# systemctl start mariadb

[root@slave ~]# systemctl start mariadb

关闭防火墙(或者开发防火墙的mysql服务和3306端口)

[root@master ~]# systemctl stop firewalld.service

[root@slave ~]# systemctl stop firewalld.service

二.mysql主从复制配置方法

1.主数据库

修改主库my.cnf主要设置个不一样的ID,以及同步的数据库的名字和端口号(默认为3306)

[root@slave ~]# vim /etc/my.cnf

在[mysqld]中加入内容如下

server-id=1

log-bin=lhb

port=3306

重启服务使配置生效

[root@master ~]# systemctl restart mariadb

设置mysql登录密码(默认情况下登录密码为空)

[root@master ~]# mysqladmin -uroot password '123456'

登录主库赋予从库权限账号,允许用户在主库上读取日志(用户名:admin,密码:123456)

[root@master ~]# mysql -uroot -p123456

在mysql里面输入

MariaDB [(none)]> grant replication slave on *.* to 'admin'@'172.25.0.254' identified by '123456';

为验证账号我们可以在从的机器上用命令作如下测试

[root@slave ~]# mysql -uadmin -p123456 -h 172.25.0.11

显示主数据看的信息

MariaDB [(none)]> show master status;

+------------+----------+--------------+------------------+

| File      | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------+----------+--------------+------------------+

| lhb.000001 |      537 |              |                  |

+------------+----------+--------------+------------------+

1 row in set (0.00 sec)

(记录File、Position的值,设置从数据库的时候会用到)

2.从数据库

修改从数据库的my.cnf,在[mysqld]如下:

server-id=2

重启下数据库

[root@slave ~]# systemctl restart mariadb

设置mysql登录密码(默认情况下登录密码为空)

[root@slave ~]# mysqladmin -uroot password '123456'

登录数据库

[root@slave ~]# mysql -uroot -p123456

在从数据库上设置同步

MariaDB [(none)]> slave stop;

Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> change master to master_host='172.25.0.11',master_user='admin',master_password='123456',master_log_file='lhb.000001',master_log_pos=537;

Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> slave start;

Query

MariaDB [(none)]> show slave status\G;

看到以下两行为Yes,表示成功了

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

假如你的Slave_IO_Running:Connecting或者No

那么可能出现以下几点问题:

1.主从两个数据库不通。

2.server-id设置错误。

3.position设置错误

4.防火墙没关闭或者没开放mysql端口

3.测试

在主数据库上新建数据库,看看是否会同步。

主数据库上:

MariaDB [(none)]> show databases;

+--------------------+

| Database          |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test              |

+--------------------+

4 rows in set (0.01 sec)

从数据库上:

MariaDB [(none)]> show databases;

+--------------------+

| Database          |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test              |

+--------------------+

4 rows in set (0.01 sec)

主数据库上创建数据库并查看

MariaDB [(none)]> create database lhbdb;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;     

+--------------------+

| Database          |

+--------------------+

| information_schema |

| lhbdb              |

| mysql              |

| performance_schema |

| test              |

+--------------------+

5 rows in set (0.00 sec)

从库上查看是否同步

MariaDB [(none)]> show databases;

+--------------------+

| Database          |

+--------------------+

| information_schema |

| lhbdb              |

| mysql              |

| performance_schema |

| test              |

+--------------------+

5 rows in set (0.01 sec)

由此可以看到在主数据库上建立数据库lhbdb,则表示成功了。^_^^_^^_^

相关文章

网友评论

      本文标题:MySQL主从复制原理

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