Mysql主从复制实战配置及测试
随着访问量的不断增加,单台MySQL数据库服务器的压力不断地增加,需要对MySQL进行优化和架构改造。
MySQL主从复制集群在中小企业、大型企业中被广泛应用,MySQL主从复制的目的是实现数据库冗余备份,将master数据库数据定时同步到slave库中,一旦master数据库宕机,可以将Web应用数据库配置快速切换至slave数据库,确保Web应用有较高的可用率。
一、系统环境准备
首先要准备两台服务器,这里使用的是两台CentOS虚拟机,推荐使用Xshell链接服务器。
服务器master:192.168.1.135,master服务器作为主服务器。
服务器slave:192.168.1.113,slave服务器作为次服务器。
(1)master服务器配置
首先master端在/etc/my.cnf配置文件的[mysqld]中加入以下代码:
server-id=1
log-bin=mysql-bin
更改配置之后一定要重启mysql服务,执行命令:
systemctl start mysqld
在master数据库服务器命令行中创建tongbu用户及密码并设置权限,执行如下命令,查看bin-log文件及position点:
grant replication slave on *.* to ‘tongbu’@’%’ identified by ‘123456’;
命令中的%指的是允许所有主机地址,这里在设置用户密码时出现了一个错误:
在这里可以执行命令来查看密码的相关配置:
SHOW VARIABLES LIKE 'validate_password%';
在这里更改密码等级以及长度,执行命令:
//设置密码安全为低
set global validate_password_policy=LOW;
//设置密码长度为6
set global validate_password_length=6;
在设置之后重新查看密码的配置:
这回我们再试试,重新设置用户及密码就能执行成功了,接着执行命令查看一下状态:
Show master status;
主要查看file和position.
(2)slave安装及配置
在slave端安装好Mysql后,同样也是修改/etc/my.cnf配置文件[mysqld]段,加入以下代码,然后重启mysql服务即可。
注意:master与slave端的server-id不能一样,slave端无须开启bin-log功能
Server-id=2
Slave设置mastarIP、用户名、密码、bin-log文件夹(就是之前master查看状态的file,mysql-bin.000002)及position(439)代码如下:
change master to
master_host='192.168.1.135',
master_user='tongbu',
master_password='123456',
master_log_file='mysql-bin.000002',
master_log_pos=439;
在slave中执行命令:
start slave;
执行命令show slave status\G查看MYSQL主从状态:`
show slave status\G
查看slave端I/O线程、SQL线程状态为connecting 和Yes,代表slave已正常连接master实现同步:
二、联通测试
master和slave服务器已经接通了,接下来在master端创建mysql_db_test数据库和t0表,测试一下,依次执行命令如下:
create database mysql_db_test charset=utf8;
show databases;
use mysql_db_test;
create table t0 (id varchar(20),name varchar(20));
show tables;
我们在slave服务器查看是否有mysql_db_test数据库和t0表,如果存在就代表slave从master复制数据成功了,在master服务器的t0表中插入两条数据,并在slave查看是否已经同步:
insert into t0 values(“001”,”test1”);
insert into t0 values(“002”,”test2”);
select * from t0;
在slave端查看一下是否能够查到对应数据,有数据则为成功!