主从作用
◆实时灾备,用于故障切换
◆读写分离,提供查询服务
◆备份,避免影响业务
基础准备
◆设备与系统
虚拟机两台(Centos7.X)
◆仓库yum源
使用华为yum源
◆软件需求
mariadb、mariadb-server
◆网卡需求(需要能连接外网)
均使用VMnet3(NAT)模式
◆远程SSH工具
本文使用finalshell
◆第三方数据库管理工具
本文使用Navicat Premium 15
拓扑规划
下图为本次实验拓扑
基础安装与配置
1.配置Master-DB和Slave-DB的IP地址
sudo ip addr add 172.16.8.10/24 dev eth0 sudo ip addr add 172.16.8.20/24 dev eth0
2.主从均关闭防火墙与SELINUX
systemctl stop firewalld systemctl disable firewalld sed -ri 's/(SELINUX=).*/\1disabled/g' /etc/selinux/config setenforce 0
3.主从均更换yum源为华为源
cd /etc/yum.repos.d/ mkdir back mv *.repo ./back wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo yum clean all yum makecache fast
4.主从均安装MySQL
yum install –y mariadb-server mariadb
5.配置Master-DB数据库/etc/my.cnf文件
vim /etc/my.cnf =========配置信息=========== [mysqld] port=3306 #监听端口为3306 datadir=/data/database #设置数据库存储位置 max_connection=1000 #设置最大连接数 skip-name-resolve #跳过用户域名解析 server-id=1 #设置为主数据库,ID为1 log-bin=mysql-bin-master #日志定义
6.Master-DB中创建数据库存储目录
mkdir -p /data/database chown -R mysql:mysql /data/database/ ll /data/
7.配置Slave-DB数据库/etc/my.cnf文件
vim /etc/my.cnf =========配置信息=========== [mysqld] port=3306 #监听端口为3306 datadir=/data/database #设置数据库存储位置 max_connection=1000 #设置最大连接数 skip-name-resolve #跳过用户域名解析 server-id=2 #设置为从数据库,ID为2
8.Slave-DB中创建数据库存储目录
mkdir -p /data/database chown -R mysql:mysql /data/database/ ll /data/
9.初始化与管理MariaDB(主从服务器均操作)
systemctl start mariadb #启动mariadb数据库服务 systemctl restart mariadb #重启mariadb数据库服务 systemctl status mariadb #查看数据库状态 mysql_secure_installation #数据库初始化
10.重启mariadb服务
systemctl restart mariadb #重启mariadb数据库服务
主从架构部署
1.登录msyql
mysql -uroot -p123.com
2.创建用户sync,并授予数据库同步的权限
grant replication slave on *.* to 'sync'@'%' identified by 'sync123'; flush privileges; #刷新权限
3.查询Master-DB的状态
show master status;
4.Slave-DB输入进行同步的主数据库的相关参数
change master to master_host='172.16.8.10', master_user='sync', master_password='sync123', master_port=3306, master_log_file='mysql-bin-master.000006', #末尾小数点需要与主状态相同 master_log_pos=245, #端口同Master-DB的状态端口 master_connect_retry=10;
5.查询slave状态.
Slave-DB同步开启
start slave;
Slave-DB重启mariadb服务
systemctl restart mariadb
6.查看从数据库状态,正确的状态如下:
show slave status\G;
◆Slave_IO_State必须为等待master发送事件
◆slave_IO_Running状态为Yes
◆slave_SQL_Running状态为Yes
Navicat管理MySQL
1.主从均开放root用户远程登录权限.
mysql -uroot -p123.com use mysql grant all privileges on *.* to 'root'@'%' identified by '123.com'; select host,user,password from user;
2.主从均使用Navicat登录mariadb(地址等信息根据自己的配置来输入)
◆新建连接
◆链接测试
◆添加mariadb成功
3.导入测试数据
◆上传测试数据压缩文件
◆解压缩包
#安装unzip zip命令模块 yum install unzip zip -y unzip test_db-master.zip
◆导入测试数据库
cd /root/test_db-master mysql -uroot -p123.com < employees.sql
4.打开Master-DB数据库,可以看到已经导入测试数据,同时Slave-DB也已经同步到了Master-DB的数据表.
5.主从分别对employees数据库执行下条查询语句.
SELECT * FROM departments
◆Master-DB查询结果:
◆Slave-DB结果同Master-DB:
6.Slave-DB中查看数据同步状态
show slave status\G;
常见的MySQL排错思路
1.防火墙和SELinux一定要关闭
2.初始化数据库之前一定要完成配置文件的正确设置(安装数据库→配置数据库→启动数据库→初始化数据库)
3.要能够查看报错的相关文件和日志信息
systemctl status mariadb.service journalctl –xe more /var/log/mariadb/mariadb.log
4.如下图,第三方数据库登录不上,基本上都是基础地址信息、权限授权没有做到位.
附件
数据库测试数据文件
版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。