Centos7 + Mariadb主从配置

环境:

主服务器:192.168.100.3   系统 Centos7  test1

从服务器:192.168.100.6   系统 Centos7  test2

主服务器配置:

安装mariadb数据库

1
2
3
4
5
6
7
[root@test1 ~]# yum install mariadb mariadb-server -y
[root@test1 ~]# systemctl start mariadb.service
[root@test1 ~]# mysql_secure_installation ##初始化数据库,设置root密码等等,需要注意允许root远程连接(实际生产环境中可以另起账号)
[root@test1 ~]# mysql -u root -p   ##进入数据库,输入密码
MariaDB [(none)]> show databases;
创建一个测试数据库DB1:
MariaDB [(none)]> create database DB1;

赋予数据库DB1连接权限:

1
2
3
4
MariaDB [(none)]> grant all privileges on *.* to root@’%’ identified by ‘redhat‘ with grant option;
MariaDB [(none)]> flush privileges;
使用DB1创建一个表:
MariaDB [(none)]> use DB1;

1
2
MariaDB [DB1]> create table test (name VARCHAR(20), sex CHAR(1), birth DATE, birthaddr VARCHAR(20));
MariaDB [DB1]> insert into test values (‘abccs’,’f’,’1995-10-22′,’china’);  ##sql语句插入几行记录

 

将数据库备份到从服务器

1
2
[root@test1 ~]# mysqldump -h localhost -u root -p DB1 > /root/1.sql
[root@test1 ~]# scp -P10060 /root/1.sql root@192.168.100.6:/root/    ##使用SCP命令拷贝到从服务器(test2服务器上,ssh端口为10060)

从服务器配置:

从服务器按照上面的方法安装mariadb,创建一个空数据库DB1,不需要创建表,为了将主服务器上的mysql还原到从服务器上。

1
2
3
4
5
6
[root@test2 ~]#yum install mariadb mariadb-server -y
[root@test2 ~]#systemctl start mariadb.service
[root@test2  ~]# mysql_secure_installation
[root@test2   ~]# mysql -u root -p
MariaDB [(none)]> create database DB1;
[root@test2   ~]# mysql -h localhost -u root -p DB1 < /root/1.sql

Mysql的主从服务器配置:

主服务器配置:

在/etc/my.cnf 添加如下内容:

1
2
注:一定要加入到加到mysqld下面,如果加入的位置或者信息不对的话,执行
show master status;结果为空;

 配置如下:

1
2
3
4
5
6
7
8
#设置服务器ID,为1的表示为主服务器;如果服务器没有以下配置,添加,如果有就跳过。
server-id=1
##启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log_bin=mysql-bin?
##需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行\
binlog-do-db=DB1
##不同步mysql系统数据库
binlog-ignore-db=mysql

 

重启服务

1
2
3
[root@test1 ~]#systemctl restart mariadb.service   进入mysql,查看数据库主机的配置文件状态
[root@test1 ~]# mysql -u root -p
MariaDB [(none)]> show master status;

 查看主服务器,出现以上类似信息;如果看不见以下结果或者为空的话,说明my.cnf配置文件配置的有问题,请检查即可。
这里记住File的值:mysql-bin.000003和Position的值:663,后面会用到。

从服务器配置:

配置MySQL从服务器的my.cnf文件;区别就是server-id不一样
在/etc/my.cnf 添加如下内容:

1
2
3
4
5
6
7
8
#设置服务器ID,为1的表示为主服务器;如果服务器没有以下配置,添加,如果有就跳过。
server-id=2
##启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log_bin=mysql-bin?
##需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行\
binlog-do-db=DB1
##不同步mysql系统数据库
binlog-ignore-db=mysql

 

接下来配置slave,进入从服务器的mysql控制台配置下:

1
2
3
[root@test2 ~]# mysql -uroot -p
MariaDB [(none)]> slave stop;
MariaDB [DB1]> change master to master_host=’192.168.100.3′,master_user=’root’,master_password=’redhat‘,master_log_file=’mysql-bin?.000003’,master_log_pos=663;
1
2
说明:change master to master_host='主服务器',master_user='mysql用户名',
master_password='mysql服务密码',master_log_file='File值',master_log_pos=Postion值;
1
MariaDB [(none)]> slave start;  ###启动slave

 最后我们查看主从同步是否正常:

1
MariaDB [(none)]> show slave status \G;

 

主要是看 Slave_IO_Running 喝Slave_SQL_Runing 这两个参数是yes就说明主从配置完成。

如果Slave_IO_Running 是 No,可以参考方法:

方法如下:

重置slave.

slave stop;

reset slave;

slave start;

重新执行show slave status \G;

文中部分材料来源:cnblogs作者

原文>>更多内容请访问《翼的家园

 

posted @   袁与张  阅读(783)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩