Ubuntu的MySQL实现主从复制!!

一、前言

    最近公司在做一款国外的项目,没有网络,只能在本地运行,怕数据不见了,或者硬盘被偷了。
    就想到了MySQL的主从复制这个功能,下面给大家演示一下如何操作。

二、环境

主库:

mysql版本:5.7
Ubuntu版本:20.4
ip: 192.168.153.128

副库:

window10
mysql版本:5.7
ip: 192.168.8.90

三、主库环境配置

1、 修改主库配置文件

 vim /etc/mysql/mysql.conf.d/mysqld.cnf

一定要加上这两行
然后保存就可以了

2、重启mysql

sudo systemctl restart mysql

3、MySQL配置

1、登录mysql

mysql -uroot -p

2、创建用户

CREATE USER 'shen'@'%' IDENTIFIED BY '123456';
2.1如果出现了密码太简单不给设置就输入下面俩个指令
set global validate_password.policy=0;
set global validate_password.length=1;

注意:这时有可能又会报“Unknown system variable ‘validate.password.policy’ ”
这是因为不同版本的mysql的关键字会有所不同,所以只要查看当前版本的关键字替换就行。

mysql> SHOW VARIABLES LIKE 'validate_password%';
然后再根据自己的关键字进行修改 就可以了

3、授予权限

GRANT REPLICATION SLAVE ON *.* TO 'shen'@'%';

4、记录数值

mysql> show master status;

这两个数值一定要记下来,后面有用到

四、副库环境配置

1、修改配置文件

C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

加入这个数值
加入这个数值

2、重启MySQL

window+R 输入 services.msc 打开服务 并找到MySql服务进行重启

3、进入Navicat

连接我们的mysql,打开查询页面

4、将从服务器连接到主服务器

change master to master_host='192.168.153.128',
master_user='shen',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=696403;

5、启动进程

start slave;

6.查看从库状态

//win使用这个
show slave status;

//如果是Ubuntu的就用下面一行
show slave status\G

正确输出
在这里插入图片描述

这样就可以了!!!

五、测试

主库添加测试

CREATE DATABASE `dada` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'
    -> ;
Query OK, 1 row affected (0.02 sec)

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

mysql> use dada;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table test(
    -> id int(11),
    -> name varchar(20)
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> insert into test values(1,zhangsan),
    -> (2,'lisi'),
    -> (3,'wagnwu');
ERROR 1054 (42S22): Unknown column 'zhangsan' in 'field list'
mysql> insert into test values(1,'zhangsan'),
    -> (2,'lisi'),
    -> (3,'wagnwu');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> quit

从库查看

这已经添加成功了!!
在这里插入图片描述

遇到的问题

遇到了好多问题跟大家分享一下。

一、Slave_IO_Running = connecting

1.问题原因:

  (1)网络不通
  (2)防火墙端口未开放
  (3)mysql账户密码错误
  (4)mysql主从机配置文件写错
  (5)配置从机连接语法错误
  (6)主机未开放账户连接权限

还有一种很奇怪的情况就是,我必须得再Navicat上把那个角色登录连接一下,他的状态才会从connection变成Yes

二、Slave_SQL_Running = NO

这种情况一般得看报错的日志,在输出中找到 Last_SQL_Error 部分,看看是报什么错误

错误一

Last_SQL_Error = Error ‘Character set ‘#255’ is not a compiled character set and is not specified in the ‘C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\Index.xml’ file’ on query. Default database: ‘db1’. Query: ‘create database db1’

经过我排查 一般这种就是数据库版本一一样导致的,我最开始主库是8.0,副库是5.7就遇到过这样的问题,后面改了Index.xml这个文件后也没有改变结果。我就把主库也改成5.7就好了。

错误二

Replica I/O for channel ‘’: Error connecting to source ‘root@192.168.8.191:3306’. This was attempt 3/86400, with a delay of 60 seconds between attempts. Message: Can’t connect to MySQL server on ‘192.168.8.191:3306’ (111), Error_code: MY-002003

这种就是身份的验证问题了,可以在mysql里面输入下面的代码就可以解决;

GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'your_host' IDENTIFIED BY 'your_password';

FLUSH PRIVILEGES;

大致就这些吧,还有好多问题也都遇到了,有点忘记了等想起来再加进去吧,或者你们评论问一下也可以,我看到了会回复

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值