mysql主从分离(读写分离)

mysql主从分离配置

环境说明

准备两台lamp服务器,系统为ubuntu18.04,初始化配置lamp可查看ubuntu18.04 系统 安装 LNMP环境
我这边使用的环境是VirtualBox虚拟机,在虚拟机中安装了两台ubuntu服务器

环境

master :192.168.1.114

slave :192.167.1.115

master 机器上的操作

  1. 更改配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

修改如下配置

bind-address = 192.168.1.114 #本机ip
server-id = 114 #在master-slave架构中,每台机器节点都需要有唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog
  1. 重启mysql,使配置生效
sudo service mysql restart
  1. 创建主从同步的mysql user
mysql -u root -p
#创建从服务器用户ub1,并且指定该用户只能在从主机192.168.1.115上登录
mysql> CREATE USER 'ub1'@'192.168.1.115' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
/#为ub1赋予REPLICATION SLAVE权限
mysql> GRANT REPLICATION SLAVE ON *.* TO 'ub1'@'192.168.1.115';
Query OK, 0 rows affected (0.00 sec)
  1. 为mysql加锁

为了主库与从库的数据保持一致,我们先为mysql加入读锁,使其变为只读。

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.01 sec)
  1. 记录下来 MASTER STATUS的信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      627 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
  1. 将master DB中现有的数据信息导出
mysqldump -u root -p --all-databases --master-data > dbdump.sql
  1. 将步骤6中的dbdump.sql的文件copy到slave
work@work-VirtualBox:~$ scp dbdump.sql work@192.168.1.115:/home/work
The authenticity of host '192.168.1.115 (192.168.1.115)' can't be established.
ECDSA key fingerprint is SHA256:kQy3IxV0RHA4P+N1CI1gpktXbTNw0asKagfY9Q3XFPo.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.115' (ECDSA) to the list of known hosts.
work@192.168.1.115's password: 
dbdump.sql                                             100%  793KB 793.5KB/s   00:00 

slave机器上的操作

  1. 修改配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

修改如下配置

bind-address = 192.168.80.115 #本机ip
server-id = 115 #master-slave结构中,唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog
  1. 重启mysql,使配置文件生效
sudo service mysql restart
  1. 导入 从master 导出的dbdump.sql文件,以使master-slave数据一致
mysql -u root -p < /home/wj/dbdump.sql
  1. 使slave与master建立连接,从而同步
mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.1.114',
    ->  MASTER_USER='ub1',
    ->  MASTER_PASSWORD='123456',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=627;
Query OK, 0 rows affected, 2 warnings (0.02 sec)


mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

master 机器上的操作

解除master DB的读锁

mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

查看是否配置成功

mysql> show slave status \G

#下面的配置都为yes表示成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

你可能感兴趣的:(mysql主从分离(读写分离))