【MySQL】 MySQL主从复制
简介
MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一。但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器(这篇博客暂时不涉及)。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。
环境
(1)主库(192.168.56.1):Win10 CMD Server version: 5.7.10-log MySQL Community Server (GPL) (绿色版)
(2)从库(192.168.56.101):Centos7 Server version: 5.7.17-log MySQL Community Server (GPL)
一、准备工作
已经安装好,并且清空两边数据
二、主库(win10)配置文件
server-id=167
log-bin=C:\Program Files\mysql-5.7.10-winx64\logs
log-bin-index=C:\Program Files\mysql-5.7.10-winx64\logs
三、从库(Linux)配置文件
server-id=168
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
四、在主库上创建一个账户,提供给从库连接(主库操作)
#主库: 192.168.56.1
#从库: 192.168.56.101
#用户:eddie
#密码:eddie
#授权:192.168.56.101
mysql> GRANT REPLICATION SLAVE ON *.* TO 'eddie'@'192.168.56.101' IDENTIFIED BY 'eddie';
Query OK, 0 rows affected, 1 warning (0.53 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.06 sec)
五、查询主库信息 (主库操作)
mysql> SHOW MASTER STATUS;
+-------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| logs.000007 | 154 | | | |
+-------------+----------+--------------+------------------+-------------------+
六、在从库配置主库配置的用户名密码和二进制文件位置
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.56.1', MASTER_USER='mysql101', MASTER_PASSWORD='mysql101',MASTER_LOG_FILE='logs.000007', MASTER_LOG_POS=154;
七、测试主从复制是否成功
mysql>SLAVE START;
mysql>SHOW SLAVE STATUS\G
# 当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常!
八、对表操作
【=主库=】 #创建库 CREATE DATABASE abc; #使用库 USE abc; #创建表 CREATE TABLE tab1(id INT AUTO_INCREMENT,NAME VARCHAR(10),PRIMARY KEY(id)); #插入数据 mysql> insert into tab1 (name) value('11'),('11'),('11'); Query OK, 3 rows affected (0.10 sec) Records: 3 Duplicates: 0 Warnings: 0 #查看库 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | aa | | abc | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec) #查看表 SHOW TABLES; mysql> show tables; +---------------+ | Tables_in_abc | +---------------+ | tab1 | +---------------+ 1 row in set (0.00 sec) #表数据 mysql> select * from tab1; +----+------+ | id | name | +----+------+ | 1 | 12 | +----+------+ 1 row in set (0.00 sec) 【=从库=】 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | abc | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.06 sec) mysql> use abc; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +---------------+ | Tables_in_abc | +---------------+ | tab1 | +---------------+ 1 row in set (0.00 sec) mysql> select * from tab1; +----+------+ | id | name | +----+------+ | 1 | 12 | +----+------+ 1 row in set (0.00 sec)
备注: 本人在做这个的时候出现几个问题,就不一一贴出来,希望到动手查一下,或者留言!