8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
主从形式
MySQL 支持多种主从模式,如
一主一从
主主复制
一主多从
多主一从
联级复制
其中 一主多从是最常用的,主服务器用于增删改,从服务器用于查询
优点
实时灾备,用于故障切换
读写分离,提供查询服务
备份,避免影响业务(提高可用性和容错行)
负载平衡
主从原理
从库生成两个线程,一个 I/O 线程,一个 SQL 线程
I/O 线程去请求主库 的 binlog,并将得到的 binlog 日志写到 relay log(中继日志)文件中
主库会生成一个 log dump 线程,用来给从库 I/O 线程传 binlog
SQL 线程,会读取 relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,最终数据一致
搭建
首先在 Linux 下搭建两台虚拟机,并安装 MySQL 数据库,并分别创建 test 数据库
主服务器 IP:192.168.232.132
从服务器 IP:192.168.232.133
登录主服务器,执行如下命令1
2
3
4
5
6
7
8
9
10
11
12
13mysql -u root -p
# 修改密码安全策略
set global validate_password_policy=0;
# 在主服务器上新建一个 backup 用户,密码为 enoch.site,192.168.232.133,也就是从服务器可以使用
grant replication slave on *.* TO 'backup'@'192.168.232.133' identified by 'enoch.site';
# 更新权限
flush privileges;
# 退出
exit;
编辑主服务器的该文件 vi /etc/my.cnf ,在 [myqld] 下并添加如下信息:1
2
3
4
5
6
7
8
9
10# 数据库唯一 id,建议和 IP 保持一致
server-id=132
# 备份日志文件地址
log_bin=/var/log/mysql/mysql-bin.log
# 只允许读,不允许修改
read-only=0
# 只备份 test 数据库
binlog-do-db=test
# 不备份 mysql 数据库,该句可不写
binlog-ignore-db=mysql
重启主服务器 service mysqld restart,会有如下提示信息
执行如下命令,创建 mysql 目录和 mysql-bin.log 文件,并给该目录与文件赋予权限1
2
3
4
5
6cd /var/log/
mkdir mysql
chmod 777 mysql
cd mysql
touch mysql-bin.log
chmod 777 mysql-bin.log
执行如下命令1
2
3
4
5
6# 重启 mysql 服务器
service mysqld restart
# 登录
mysql -u root -p
# 查看主服务器信息
show master statusG;
记录,数据库操作日志文件:File: mysql-bin.000001,开始位置:Position: 154,从服务器会用到
登录从服务器,编辑从服务器的该文件 vi /etc/my.cnf ,在 [myqld] 下并添加如下信息:1
2
3server-id=133
# 备份日志文件地址
log_bin=/var/log/mysql/mysql-bin.log
重启一样会报错,service mysqld restart,执行下面命令,在重启1
2
3
4
5
6
7
8cd /var/log/
mkdir mysql
chmod 777 mysql
cd mysql
touch mysql-bin.log
chmod 777 mysql-bin.log
service mysqld restart
登录从服务器的 mysql,执行如下命令,用户名密码要与在主服务器创建的保持一致,master_log_file是主服务器备份日志文件,master_log_pos是主服务器日志开始下标,这两个要与主服务一致,在上面是通过该 show master statusG; 命令查看的
因为重启了几次,mysql-bin.000003所以该项改变了1
2
3
4
5
6change master to master_host='192.168.232.132',master_user='backup',master_password='enoch.site',master_log_file='mysql-bin.000003',master_log_pos=154;
# 关闭从服务器,在开启,在查看从服务器状态,如下图红框选中 IO、SQL 为 Yes 即代表主从搭建成功
stop slave;
start slave;
show slave statusG;
如何查看是否主从配置成功,主服务器执行 SQL, 从服务器也自动执行相应 SQL1
2
3
4
5
6
7# 主服务器
use test
create table user(id int,name varchar(10));
# 从服务器
use test
show tablse;