1.5、Mysql主从复制

image

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;
posted @ 2021-03-21 02:12  Jackiezhu  阅读(42)  评论(0)    收藏  举报