ShardingJdbc笔记-主从复制-读写分离-分库分表


测试代码:https://gitee.com/ylbuu/sharding-jdbc


这里我使用两台虚拟机分别安装MySQL来测试学习;

安装MySQL

资源连接:https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/

配置MySQL扩展源

rpm -ivh https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm

yum安装MySQL

yum install mysql-community-server -y

启动MySQL,加入开启自启

systemctl start mysqld
systemctl stop mysqld
systemctl enable mysqld

使用初始密码登录mysql

## 获取初始密码
grep "password" /var/log/mysqld.log
mysqld -uroot -p

## 一步到位
mysqld -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysqld.log)

修改初始密码

# 修改密码级别0,1,2;0最低。
mysql > set global validate_password_policy=0;

mysql > set password for root@localhost = password('1234');

or

mysql > alter user 'root'@'localhost' identified by '1234';

# 查看密码策略要求
mysql > SHOW VARIABLES LIKE 'validate_password%';

远程登录授权(可视化工具)

mysql > grant all on *.* to root@'%' identified by '1234'; 
# 刷新
mysql > flush privileges;

MySql主从复制

主从复制原理

原理:
在这里插入图片描述

主服务器上面的任何修改都会通过自己的I/O thread保存在二进制日志Binary log里面;

  • 从服务器上面也启动一个I/O thread,通过配置好的用户名和密码,连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写入本地一个叫Relay log(中继日志)里面;
  • 从服务器上同时开启一个I/O thread 定时检查Relay log,如果发现由更新立即把更新的内容在本机上执行一遍;每个从服务器都会收到主服务器二进制日志的全部内容的副本;
  • 从服务器设备负责决定应该执行二进制日志中的哪些语句;
配置

Master节点配置etc/my.conf

[mysqld]
## 同一局域网内注意要唯一
server.id=100
## 开启二进制日志功能,可以随便取
log-bin=mysql-bin
## 复制过滤,不需要备份的数据库,不输出
binlog-ignore-db=mysql
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row)
binlog_format=mixed

重启mysql服务systemctl restart mysqld

Slave节点配置etc/my.conf

[mysqld]
## 同一局域网内注意要唯一
server.id=101
## 开启二进制日志功能,可以随便取
log-bin=mysql-slave-bin
## relay_log配置
relay_log=mysql-relay-bin
## 复制过滤,不需要备份的数据库,不输出
binlog-ignore-db=mysql
## 如果需要同步函数或者存储过程
log_bin_trust_function_creators=true
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row)
binlog_format=mixed
## 跳过主从复制中遇到的所有错误或指定的错误,避免slave复制中断
## 如:1062指 主键重复错误,1032指主从数据库数据不一致
slave_skip_errors=1062

重启MySQL服务

在master主服务器上授权slave服务器可以同步权限

## 授予从服务器可以同步主服务器服务
mysql > grant replication slave,replication client on *.* to 'root'@'从服务器ip' identified by '从服务器密码';
## 刷新
mysql > flush privileges;

## 查看MySQL现在有哪些用户及对应的ip权限
mysql > select user,host from mysql.user;

在这里插入图片描述

查询master服务的binlog文件名和位置

show master status;

在这里插入图片描述

# 查看binlog是否开启
mysql > show variables like '%log_bin%';

在这里插入图片描述

slave从服务器关联master节点

mysql > change master to master_host='master服务器ip',master_user='root',master_password='主服务器密码',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=二进制位置Position;

其中master_log_filemaster_log_pos需要实时查看master主服务器show master status;的值。

在slave节点上查看主从同步状态

# 启动主从复制
mysql > start slave;
# 查看状态
mysql > show slave status\G;

#停止复制
mysql > stop slave;

连接错误记录:

服务器因错误停止的恢复方式–Slave_SQL_Running:No

先停止复制
stop slave;
set global sql_slave_skip_counter=1;
start slave;
show slave status\G;

查看主服务器master信息
show master status;

重新绑定
stop slave;
change master to master_host='master服务器 ip',master_user='root',master_password='1234',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=二进制位置Position;

在这里插入图片描述

测试

主库创建一个test库;

在这里插入图片描述

查看从库;

在这里插入图片描述

ShardingJdbc实现读写分离

pom依赖
<properties
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值