
mysql主从复制
横向扩展: 增加多台机器,一个主节点,其他为备用节点,主节点必须开启二进制日志更新,从节点负责读数据
数据分布
负载均衡读操作备份
高可用和故障切换
-------------
MySQL升级测试
master主节点
dump thread: 为每个从节点启动dump线程,向其发送binary log events二进制日志
slave从节点
io thread: 对接主机点的dump进程,接收二进制日志
sql thread: 读取接收过来的日志,从而应用到我们的数据库中,最终达到我们从节点的数据和主节点一致
二进制日志记录三种格式
--------------------
基于"语句型""记录 STATEMENT
基于"行""记录:row,记录数据,日志量较大,更加安全,建议使用的格式
混合模式: mixed,让系统白行判定该基于哪种方式进行,默认模式(MariaDB10.2.4及版本以上)
查看个版本不同的使用类型
# show variables like 'binlog_format';
修改日志类型为行型
# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
binlog_format="row"
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
重启生效
# systemctl restart mysqld/mariadb
配置主从
--------
为每个主机设置不同的server_id,加以区分
mysql> select @@server_id;
centos8.2-8 mysql-server主节点
------------------------------
# hostnamectl set-hostname master
# yum install -y mysql-server
存放二进制日志
# mkdir /mysql/binlog -pv
# chown mysql.mysql /mysql/binlog/=
指定二进制存放位置和指定mysql的server_id
# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=8
log-bin=/mysql/binlog/mysql-bin
重启mysql生效
# systemctl restart mysqld
查看二进制位置
mysql> show master status;
| File | Position |
| mysql-bin.000001 | 156
mysql-bin.000001 156
创建新账号
mysql> CREATE user 'repluser'@'10.0.0.%' identified by '1';
对账号经行复制授权
mysql> grant replication slave on *.* to repluser@'10.0.0.%';
查看从节点信息
mysql> show slave status\G
查看线程
mysql> show processlist;
Binlog Dump
上传测试:
F:\马哥Linux43\files\mysql\scripts\hellodb_innodb.sql
# mysql < hellodb_innodb.sql
创建测试表
创建空表
F:\马哥Linux43\files\mysql\scripts\testlog
# mysql hellodb < testlog.sql
查看创建的空表
# mysql hellodb
mysql> select count(*) from testlog;
mysql> call sp_testlog;
centos8.2-18 mysql-backup从节点
-------------------------------
# hostnamectl set-hostname slave
# yum install -y mysql-server
指定二进制存放位置和指定mysql的server_id
# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=18
启动数据库
# systemctl start mysqld
进入mysql
# mysql
mysql> help change master to;
CHANGE MASTER TO
MASTER_HOST='10.0.0.8', 主服务器地址
MASTER_USER='repluser',
MASTER_PASSWORD='1'
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001', 二进制位置
MASTER_LOG_POS=156; Position
开启线程
mysql> start slave;
查看开启的线程状态
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
测试成功
mysql> show databases;
hellodb
mysql> use hellodb
mysql> select * from students;