Goal:一个主数据库(master),一个从数据库(slave)。master加X锁,slave加X锁。
实现步骤:
<1>准备工作:去MySQL官网 https://www.mysql.com 下载MySQL数据库解压版,我这里是Windows 10 64位操作系统,所以下载对应的MySQL解压包。
<2>等待下载完成后,创建master和slave的解压路径,并分别将MySQL解压到对应的路径下。
↑ 这是master路径。
↑ 这是slave路径(创建路径时要注意不要出现字母s开头的文件夹,否则路径解析时会出问题)。
<3>将MySQL解压到对应的文件夹下之后,再去配置环境变量。Windows 10的环境变量设置就比较简单了,直接在path路径后添加MySQL的解压路径,注意要配置到bin文件夹下,master和slave都需要配置环境变量(例:F:\MYSQL\one-slave\mysql-5.7.25-winx64\bin)。
<4>安装好MySQL、配置完环境变量后就需要创建我们的MySQL服务并初始化了。
4.1 创建初始化参数配置文件:分别在master和slave的根路径创建 my.ini 配置文件,因为解压版的MySQL时没有这个文件的。
master:
slave:
注意master和slave的端口号 和 server-id 并不相同。
4.2 创建服务监听,并初始化数据库:
首先,以管理员身份进入DOS命令窗口,并进入 F:\MYSQL\master\mysql-5.7.25-winx64\bin 下,执行命令:
mysqld -install MASTER
,说明master服务监听创建成功。之后继续执行:mysqld --initialize-insecure --user=MASTER 命令进行数据库初始化,大概10S之后,初始化就会完成,并在MySQL的解压根路径下生成data文件夹和对应的配置文件。
data文件夹:
接下来,执行 net start MASTER 命令启动MASTER服务监听。
启动成功之后,执行命令 mysqladmin -u root -p password 新密码 命令设置你的数据库密码,root旧密码为空,直接敲回车就OK。
这样,master安装和初始化就完成了。slave和master的初始化步骤一样(在添加完slave服务之后,记得要去注册表中改掉slave的ImagePath,具体操作百度一下。),这里就不赘述了。
<5>完成数据库的安装及初始化的准备工作后,就要正式开始我们的主从复制(同步)的配置了,到这里是不是非常的激动呢!!!别急,接下来咱们就开始,哈哈哈!这里独占一步以示尊敬。
<6>首先是master的同步参数配置:
这里还可以加上以下几个参数: binlog-format = MIXED #表示记录日志的格式,推荐使用MIXED格式的日志
binlog-ignore-db = XXX #表示不需要主从复制的数据库。更多详细的参数配置去mysql的官网了解详情。
接下来是slave的同步参数配置:
限制slave为只读模式,禁用写操作。
<7>完成同步参数配置后登录master。
7.1 创建同步用户
每条SQL分别对用下面的每一步。
1、创建同步用户。
2、授予该用户文件访问权限并允许从从库IP访问主库。
3、授予该用户同步权限。
4、将权限更新到数据库中。
5、重启master服务监听。
6、登入master库,执行 SHOW MASTER STATUS; 记录日志文件版本和Position(复制标记位)信息(这个有大用处哦)。
<8>完成master库的设置之后,登入slave从库。
1、关闭主从复制(默认是开启的)。
2、设置同步账号,以及同步日志文件名和同步开始的标记位(Position)。
3、开启主从同步。
4、执行 SHOW SLAVE STATUS; 检查主从复制状态,主从复制的线程状态:等待master的事件命令。
同步日志的文件名。
主从复制的线程状态和SQL执行线程的状态。
这些状态正常则说明我们的主从复制配置正常。
<9>接下来就是实测了,哈哈哈哈哈哈~
<10>登入master库,创建数据库db_master。
然后登入从库,检查从库中是否同步到我们的db_master。
啦啦啦!数据库果然同步了~开心。但是别急,那么我们新建的表和CRUD语句是否能正常同步呢?且待楼主一试。
在主库中执行建表语句,然后去从库中复查后发现......
从库中果然也生成了一摸一样的表!
那么CURD命令就由小伙伴们来验证吧~