mysql主从配置

一、环境描述

利用两台虚拟机centos7.6 配置 mysql5.7主从服务器

centos7.6-2 (主服务器master)

ip地址10.0.0.137

远程登录账号llw

远程登录密码llw@2023

centos7.6-3(从服务器slave)

ip地址10.0.0.135

远程登录账号liuliu

远程登录密码liuliu@2023

二、克隆出来的虚拟机无法正常上网

centos7.6-3由centos7.6-2克隆而来(克隆时确保centos7.6-2是关机状态)

克隆出来的centos7.6-3可能无法正常上网,需要先移除配置,然后再重新添加

2.修改克隆机的server-id

克隆出来的centos7.6-3和centos7.6-2的server-uuid是一样的,需要进行更改避免slave-IO-Runing是NO状态

(1)查看server-uuid

方法一:cat /var/lib/mysql/auto.cnf

方法二:show variables like 'server_uuid';

(2)修改server-uuid
1、利用uuid函数生成新的uuid
mysql> select uuid();
+--------------------------------------+
| uuid()                               |
+--------------------------------------+
| b33057ff-bec6-11eb-ad94-000c29af6856 |
+--------------------------------------+
1 row in set (0.00 sec)

2、查看配置文件目录
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.03 sec)

3、编辑配置文件目录

vi /var/lib/mysql/auto.cnf

4、uuid修改新生成的uuid【把刚刚生成的uuid复制过来】
server-uuid=b33057ff-bec6-11eb-ad94-000c29af6856

5、重启服务
service mysqld restart

三、配置master和salve的准备工作

1.关闭防火墙或者开启mysql端口

开启mysql端口(推荐)

1.查看mysql服务器的端口号
show variables like 'port';

2.查看防火墙是否开启
systemctl status firewalld
 
显示active说明是开启状态,如果是关闭状态需要开启防火墙
systemctl start firewalld

3.查看开放的端口号
firewall-cmd --list-all 或者 firewall-cmd --list-ports
 
4.设置开放的端口号
firewall-cmd --permanent --add-port=3306/tcp 
 
5.重启防火墙
firewall-cmd --reload


关闭防火墙并且禁用防火墙的开机自启动
systemctl stop firewalld
systemctl disable firewalld

查看mysql,如果不是开启状态需要开启

查看
systemctl status mysqld
开启
systemctl start mysqld

四、配置master

(1)修改配置文件/etc/my.cnf

mysql服务ID,保证整个集群环境中唯一。取值范围1~【(2的32次方)-1】,默认为1

read-only当前服务器的只读状态,“1”只读,"0"读写

vim /etc/my.cnf
server-id=1
read-only=0

(2)重启mysql服务

systemctl restart mysqld

(3)登录mysql,创建远程连接账号,授予主从复制权限

登录mysql
mysql -u用户名 -p密码

创建远程连接账号
create user '创建远程账号名'@'%' identified with mysql_native_password by '设置远程登录密码';

授予主从复制权限
grant replication slave on *.* to '创建远程账号名'@'%';

(4)查看二进制日志坐标

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

如果File和Position为空,解决方法如下

(1)查看log_bin文件是否为on
show variables like 'log_bin';

(2)如果为off,需要开启
vim /etc/my.cnf
log_bin=mysql.bin

(3)重启mysqld
systemctl restart mysqld

五、配置slave

(1)修改配置文件/etc/my.cnf

vim /etc/my.cnf
server-id=2
read-only=1

(2)重启mysql服务

systemctl restart mysqld

(3)登录mysql

mysql8.0.23版之前的

change master to
master_host='主库ip',
master_user='在主库设置的远程登陆账号',
master_password='远程登陆账号对应的密码',
master_log_file='查看主库状态的二进制文件名File'
master_log_pos=查看主库的Position;

mysql8.0.23版本

change replication source to
source_host='主库ip',
source_user='在主库设置的远程登陆账号',
source_password='远程登陆账号对应的密码',
source_log_file='查看主库状态的二进制文件名File'
source_log_pos=查看主库的Position;

(4)启动slave,开始同步操作

8.0.22版本之后
start replica;

8.0.22版本之前
start start;

(5)查看主从同步状态

8.0.22版本之后
start replica status\G;

8.0.22版本之前
start start status\G;

六、mysql主从测试

(1)先关闭从库

stop slave;

(2)创建sql文件夹

cd /root
mkdir sql

(3)利用XFTP软件将模拟数据从windows导入到centos7.6中

(4)创建数据库testdb,创建表tb_sku

mysql> create databases testdb;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.00 sec)

mysql> use testdb;
Database changed
mysql> CREATE TABLE `tb_sku` (
    ->   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',
    ->   `sn` varchar(100) NOT NULL COMMENT '商品条码',
    ->   `name` varchar(200) NOT NULL COMMENT 'SKU名称',
    ->   `price` int(20) NOT NULL COMMENT '价格(分)',
    ->   `num` int(10) NOT NULL COMMENT '库存数量',
    ->   `alert_num` int(11) DEFAULT NULL COMMENT '库存预警数量',
    ->   `image` varchar(200) DEFAULT NULL COMMENT '商品图片',
    ->   `images` varchar(2000) DEFAULT NULL COMMENT '商品图片列表',
    ->   `weight` int(11) DEFAULT NULL COMMENT '重量(克)',
    ->   `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    ->   `update_time` datetime DEFAULT NULL COMMENT '更新时间',
    ->   `category_name` varchar(200) DEFAULT NULL COMMENT '类目名称',
    ->   `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称',
    ->   `spec` varchar(200) DEFAULT NULL COMMENT '规格',
    ->   `sale_num` int(11) DEFAULT '0' COMMENT '销量',
    ->   `comment_num` int(11) DEFAULT '0' COMMENT '评论数',
    ->   `status` char(1) DEFAULT '1' COMMENT '商品状态 1-正常,2-下架,3-删除',
    ->   PRIMARY KEY (`id`) USING BTREE
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| tb_sku           |
+------------------+
1 row in set (0.00 sec)

(5)导入sql文件

mysql> load data local infile '/root/sql/tb_sku1.sql' into table `tb_sku` fields terminated by ',' lines terminated by '\n';

mysql> load data local infile '/root/sql/tb_sku2.sql' into table `tb_sku` fields terminated by ',' lines terminated by '\n';

也可以使用Navicat软件导入sql文件

(6)打开从库

start slave;

(7)带从库查看数据库,会比之前多一个testdb数据库

show databases;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值