mysql的主从配置

#mysql数据库 #主从

MySQL数据库主从配置

1.MySQL主从介绍

MySQL 主从又叫做 Replication、AB 复制。简单讲就是 A 和 B 两台机器做主

从后,在 A 上写数据,另外一台 B 也会跟着写数据,两者数据实时同步的。

MySQL 主从是基于 binlog 的,主上须开启 binlog 才能进行主从。

主从过程大致有 3 个步骤:

1)主将更改操作记录到 binlog 里

2)从将主的 binlog 事件(sql 语句)同步到从本机上并记录在 relaylog

里中继日志

3)从根据 relaylog 里面的 sql 语句按顺序执行

主配置(安装完 mysql 的虚拟机)

一台IP:192.168.13.5 我将这台虚拟机作为我的主服务器

一台IP:192.168.13.8 我将这台虚拟机作为我的从服务器

基础配置:

root@localhost \~\]# vi /etc/my.cnf进入MySQL的编辑文件 ![](https://i-blog.csdnimg.cn/direct/5307f65c73c44f56b56b4a9d29debf23.png) ##### **重启mysqld服务:(两种都可以)** ****错误:出现错误之后,可以查看MySQL的进程,如果有的话,请先全部kill掉**** ps aux \| grep mysql \*kill -9 进程数据 \[root@localhost \~\]# /etc/init.d/mysqld restart \[root@localhost \~\]# systemctl start mysqld.service ##### **备份MySQL库(加入环境变量)** \[root@localhost \~\]# mysqldump -uroot mysql \> /tmp/mysql.sql 输入该命令之后会存在命令不存在,可以通过添加mysql的环境变量 ![](https://i-blog.csdnimg.cn/direct/98ab86e2b79743f28034e143b35b9982.png) ![](https://i-blog.csdnimg.cn/direct/2a9adfec6a964cdd80d03dbba8da8e18.png) ##### **创建一个库保存数据(此库为同步库)** \[root@localhost \~\]# mysqldump -uroot -e "create database kei" ###### **将MySQL库恢复成新建的库,作为测试数据,进行数据库配置** ##### \[root@localhost \~\]# mysql -uroot进入数据库,创建同步数据的用户赋予权限 mysql\> grant replication slave on \*.\* to 'repl' @192.168.13.5 identified by '204718'; ![](https://i-blog.csdnimg.cn/direct/2869a447c27c4e44806d18cc22f6223a.png) ****提醒:此次进入的仅此为数据库,可以使用use MySQL或者是其他进入数据库,若是要进入MySQL数据库一定要进去,因为MySQL本身就含有一个MySQL数据库**** ##### **将表锁住,保持表内的数据不变** mysql\> flush tables with read lock; ![](https://i-blog.csdnimg.cn/direct/cdaa39ce47e547129ec35553a275dbbb.png) ##### **显示主机的状态** mysql\> show master status; ![](https://i-blog.csdnimg.cn/direct/a1d1b230e79e419db3ec6d1ac719bc04.png) ****错误:这里一定要细心,要不然很有可能出现主机状态为空,配置MySQL文件的时候需要注释掉和需要留存的要分清楚,尤其是主配置中添加配置文件的时候。我们可以通过,ls -/data/mysql 查看有错误的地方(含有err即为错误日志)\[root@localhost \~\]# tail -15 /data/mysql/aminglinux.000001用这个命令查看错误日志。其中/data/mysql就是存放mysql数据库,后面就是二进制日志。**** ![](https://i-blog.csdnimg.cn/direct/12c62536074c44eab6655cc80d107dca.png) ![](https://i-blog.csdnimg.cn/direct/b469c4bd848b4667b205ae828ecddc54.png) #### **从配置(安装完mysql的虚拟机)** ##### **基础配置:** \[root@localhost \~\]# vi /etc/my.cnf进入MySQL的编辑文件 ![](https://i-blog.csdnimg.cn/direct/8bb3977e1d0646768aa475d51865db19.png) ##### **重启mysqld服务:(两种都可以)** \[root@localhost \~\]# /etc/init.d/mysqld restart \[root@localhost \~\]# systemctl start mysqld.service ****错误:出现错误之后,可以查看MySQL的进程,如果有的话,请先全部kill掉**** ps aux \| grep mysql \*kill -9 进程数据 ##### **在****主****服务器上将文件拷贝到从上,并在从上查看两者的文件大小是否一致** \[root@localhost \~\]# scp /tmp/mysql.sql [[email protected]:/tmp/](mailto:[email protected]:/tmp/)这里填写的IP为从的 \[root@localhost \~\]# ls -la /tmp/mysql.sql ![](https://i-blog.csdnimg.cn/direct/016ee2a76bb94a4288d372dc75bb35ed.png) ##### **创建一个和主一样的库** \[root@localhost \~\]# mysqldump -uroot -e "create database kei" ![](https://i-blog.csdnimg.cn/direct/e198d50c6abc4c0daa2e67b352f2aaae.png) ##### **将文件的内容导入库** \[root@localhost \~\]# mysql -uroot kei \< /tmp/mysql.sql \[root@localhost \~\]# mysql -uroot进入数据库,配置数据库 错误:此时的IP等一系列,要求的都是为主服务器的,log_file和log_pos都通过主配置的显示主机状态中得到。 ![](https://i-blog.csdnimg.cn/direct/54030cf820334843897a6a23da8ff02c.png) ##### **在****主****上面执行解锁表** \[mysql\] \> unlock tables; ![](https://i-blog.csdnimg.cn/direct/86a6f77f1ccb427096b8ae7d146cd941.png) 进行验证的时候,需要刷新 #### **主从同步以及相关配置参数** ##### **在从服务器上操作并执行命令,关闭防火墙** \[mysql\]\>systemctl stop firewalld \[mysql\]\>setenforce 0 \[mysql \]\> show slave statusG ![](https://i-blog.csdnimg.cn/direct/2fd3da29c670408ba98a9babfef8c4b5.png) ![](https://i-blog.csdnimg.cn/direct/a6ec45a1e489496590dd98b94a4752ec.png) 出现上面的这种即为正确的,表示配置正常。 ![](https://i-blog.csdnimg.cn/direct/46f0b6e605d64613a1833b3625d964fa.png) ![](https://i-blog.csdnimg.cn/direct/3c1a2432272c43609016fb226c69c492.png) ##### **配置参数** \[root@localhost\~\]# vi /etc/my.cnf从 ![](https://i-blog.csdnimg.cn/direct/e5317e336dfa44d5ab462ee69e55d612.png) \[root@localhost\~\]# vi /etc/my.cnf主 ![](https://i-blog.csdnimg.cn/direct/3474855c714a4014abed8fb1b276dec6.png) 1. #### **测试主从** ##### **主:进入同步的数据库(注意MySQL的本身含有MySQL数据库)** \[root@localhost \~\]# mysql -uroot mysql\> use kei由于我创建的用来同步的库为kei mysql\> select count(\*)from db; ![](https://i-blog.csdnimg.cn/direct/380d1abd372d46a68b7104e7d990ee64.png) ##### **从:** \[root@localhost \~\]# mysql -uroot mysql\> use kei mysql\> select count(\*)from db; ![](https://i-blog.csdnimg.cn/direct/44764fe5c3da477d9457b6007928bd15.png)

相关推荐
xiaoduyyy19 分钟前
【Android】View动画—XML动画、帧动画
android·xml
weixin_454102461 小时前
cordova android12+升级一些配置注意事项
android·前端·cordova
靠近彗星1 小时前
基于 Vue + Django + MySQL 实现个人博客/CMS系统
前端·vue.js·python·mysql·django
兰亭序咖啡2 小时前
学透Spring Boot — 007. 加载外部配置
android·java·spring boot
男Ren、麦根2 小时前
MySQL 复制与主从架构(Master-Slave)
数据库·mysql·架构
8931519602 小时前
Android穿山甲banner广告穿插到项目的banner中
android·android开发·android教程·穿山甲banner广告加入项目
Stuild Stuil3 小时前
Mysql 字段值批量自增或自减(坐标系数据,(x,y))
java·javascript·mysql
利明的博客3 小时前
mediacodec服务启动时加载media_codecs.xml
android·xml·java
morganmin3 小时前
(一)MySQL常见疑惑之:select count(*)和select count(1)的区别
数据库·mysql
zhangjin12224 小时前
kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入
大数据·数据仓库·mysql·etl·kettle实战·kettlel批量插入·kettle mysql