实现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,则表示成功了。^_^^_^^_^