mysql主从复制

mysql主从复制

概念

  • mysql主从复制的主要途径

  • 1.用于备份,避免影响业务

  • 2.实时灾备,用于故障切换

  • 3.读写分离,提供查询服务

  • 主从的形式

  • 1.一主多从 表示只有一台主服务器,多台从服务器

  • 2.主主复制 表示互为主服务器,同时也互为从服务器

  • 3.一主多从 ----扩展系统读取的性能,因为读是在从库读取的

  • 4.多主一从 ----5.7开始支持

  • .mysql主从复制原理

  • 1.在主库上把将更改DDL DML DCL记录到二进制日志Binary Log中。

  • 2.备库I/O线程将主库上的二进制日志复制到自己的中继日志Relay Log中。

  • 3.备库SQL线程读取中继日志中的事件,将其重放到备库数据库之上。

  • 主从复制配置的步骤:

  • 1.确保从数据库与主数据库里的数据一样

  • 2.在主数据库里创建一个同步账号授权给从数据库使用

  • 3.配置主数据库(修改配置文件)

  • 4.配置从数据库(修改配置文件

事例

1.MySQL数据库传统复制
数据库传统主从复制如下, 如需实现多从, 将以下实验从案例在配置一次即可

  • 环境
主机名IP地址系统版本数据库版本
mastet192.168.100.33red-hat75.7.23
Salve192.168.100.128red-hat75.7.23
master配置
  • 配置文件/etc/my.cnf
[root@master~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve

log-bin=mysql-bin
server-id=160
symbolic-links=0
log-error=/var/log/mysqld.log
[root@master ~]# service mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!
  • 模拟线上数据库
mysql> create database dsb;
Query OK, 1 row affected (0.12 sec)

mysql> use dsb;
Database changed
mysql> create table t1(id int, name varchar(20));
Query OK, 0 rows affected (0.88 sec)

mysql> insert into t1 values (1,'tt')
    -> ;
Query OK, 1 row affected (0.02 sec)

mysql>  insert into t1 values (2,'ttt');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    1 | tt   |
|    2 | ttt  |
+------+------+
2 rows in set (0.00 sec)
  • 授权, 允许能够远程连接的主机(replicaiton)
mysql> create user 'xie'@'192.168.100.%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

mysql> grant replication slave on *.* to 'xie'@'192.168.100.%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 查看数据库的状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

  • 导出当前数据
[root@master ~]# mysqldump -uroot -p123.com --all-databases > /opt/all_$(date +%F)
  • 将备份文件传送至Slave
[root@master ~]# scp /root/2018-10-30-all.sql root@192.168.100.128:/roor/
Slave配置
  • 检查是否能使用远程账户登录
[root@Slave local]# mysql -udsb -p123.com -h 192.168.100.33
//如果登录失败,请检查是否关闭了防火墙
  • 修改配置文件/etc/my.cnf, 从需开启binlog
[root@xiefei ~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve

server-id=161
relay-log=mysql-relay-bin
symbolic-links=0
log-error=/var/log/mysqld.log
  • 重启mysql数据库服务
[root@Slave local]# service mysqld restart
  • 导入数据,追master的bin_log
[root@Slave ~]#  mysql -uroot -p'123.com' -e "source /root/2018-10-30-all.sql"
  • 指向Master,无需指定binlogfile和pos
mysql> change master to master_host='192.168.100.33',master_user='xie',master_password='123.com',master_port=3306,master_log_file='mysql-bin.000008',master_log_pos=154;
  • 启动slave角色
mysql> start slave;
  • 查看角色是否同步
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.100.33
                  Master_User: xie
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000008
          Read_Master_Log_Pos: 154
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000008
             Slave_IO_Running: Yes               //从服务器上产生的线程,必须是yes
            Slave_SQL_Running: Yes               // //从服务器上产生的线程,必须是yes
  • 测试验证
    在主服务器上插入一张新表,并写入数据
mysql> create database dxk;
Query OK, 1 row affected (0.00 sec)

mysql> use dxk;
Database changed
mysql> create table  dsb(id int not null,name varchar(100)not null,age tinyint);
Query OK, 0 rows affected (0.82 sec)

mysql> insert dsb (id,name,age)values(1,'tom',10),(2,'jack',30);
Query OK, 2 rows affected (0.17 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from dsb;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | tom  |   10 |
|  2 | jack |   30 |
+----+------+------+
2 rows in set (0.00 sec)
  • 在从数据库中查看是否同步
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dxk                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)


mysql> select * from dxk.dsb;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | tom  |   10 |
|  2 | jack |   30 |
+----+------+------+
2 rows in set (0.01 sec)
基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值