Mysql服务器主从相关

一主一从

  1. 准备两台服务器(以53为主,54为从)
  2. 启动主服务器binlog日志
    vim /etc/my.cnf.d/mysql-server.cnf
    [mysqld]
    server-id=53   //指定主服务器的server-id为53
    log-bin=mysql53   //修改binlog日志命名
    :wqsystemctl  restart mysqld  //重载mysqld服务,使得以上配置生效
  3. 创建"复制/同步用户"并授权
        [root@mysql53 ~]# mysqlmysql> create user repluser@"%" identified by "123qqq...A";Query OK, 0 rows affected (0.11 sec)mysql> grant replication slave on *.*  to repluser@"%";Query OK, 0 rows affected (0.09 sec)
  4. 修改从服务器的server-id为54,方便后续主从同步
    [root@mysql54 ~]# vim /etc/my.cnf.d/mysql-server.cnf
    [mysqld]
    server-id=54
    :wq
    [root@mysql54 ~]# systemctl  restart mysqld
  5. 为从服务器指定主服务器的信息
    [root@mysql54 ~]# mysql
    mysql> change master to  master_host="192.168.88.53" , master_user="repluser" , master_password="123qqq...A" ,master_log_file="mysql53.000001" , master_log_pos=667;
    // 其中的master_log_file和master_log_pos记录保持主服务器binlog日志记录
    Query OK, 0 rows affected, 8 warnings (0.34 sec)
    mysql> start slave ; //启动slave进程
    Query OK, 0 rows affected, 1 warning (0.04 sec)
    mysql> show slave status \G  //查看状态信息
    *************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.88.53  //主服务器Master_User: repluser        //指定的数据同步用户Master_Port: 3306Connect_Retry: 60Master_Log_File: mysql53.000001   //主服务器binlog信息Read_Master_Log_Pos: 667Relay_Log_File: mysql54-relay-bin.000002Relay_Log_Pos: 322Relay_Master_Log_File: mysql53.000001Slave_IO_Running: Yes   //IO线程Slave_SQL_Running: Yes   //SQL线程
  6. 测试
    给主服务器添加测试用户(plj)并授予权限
        [root@mysql53 ~]# mysqlmysql> create user plj@"%" identified by "123456";Query OK, 0 rows affected (0.14 sec)mysql> grant all on gamedb.* to plj@"%" ;Query OK, 0 rows affected (0.12 sec)mysql> create database gamedb;
    Query OK, 1 row affected (0.24 sec)
    mysql> create table gamedb.user(name char(10) , class char(3));
    Query OK, 0 rows affected (1.71 sec)
    mysql> insert into gamedb.user values ("yaya","nsd");
    Query OK, 1 row affected (0.14 sec)
    mysql> select  * from gamedb.user;
    +------+-------+
    | name | class |
    +------+-------+
    | yaya | nsd   |
    +------+-------+
    1 row in set (0.01 sec)
    mysql>

    从服务器查看数据

        [root@mysql50 ~]# mysql -h192.168.88.54 -uplj -p123456 –e ‘select  * from gamedb.user’+------+-------+| name | class |+------+-------+| yaya | nsd   |+------+-------+[root@mysql54 ~]# 

一主多从

创建思路同上类似,需要对新的从服务器指定主服务器的信息

主从从

创建思路同上类似,需要对新的从从服务器指定从服务器的信息

读写分离

原理

利用mycat中间件软件提供读写分离功能,一主一从结构实现数据同步/复制,客户端登录mycat服务,访问对应数据库,发送sql请求,交给主master服务器处理写入,收到sql读请求时,交给slave服务器读数据.

步骤

  1. 搭建一主一从结构(实现主从之间的数据复制/同步)
    如:56主57从58为mycat服务器
  2. 对58部署mycat服务并配置
    mycat软件包
        //安装jdk[root@mycat58 upload]# yum -y install java-1.8.0-openjdk.x86_64//安装解压命令[root@mycat58 upload]# which unzip || yum -y  install unzip//安装mycat[root@mycat58 upload]# unzip mycat2-install-template-1.21.zip[root@mycat58 upload]# mv mycat /usr/local///安装依赖[root@mycat58 upload]# cp mycat2-1.21-release-jar-with-dependencies.jar  /usr/local/mycat/lib///修改权限[root@mycat58 upload]# chmod -R 777 /usr/local/mycat/ //定义连接mycat服务使用的用户以及密码[root@mycat58 ~]# vim  /usr/local/mycat/conf/users/root.user.json{"dialect":"mysql","ip":null,"password":"654321", 密码"transactionType":"proxy","username":"mycat" 用户名}:wq//定义连接的数据库服务器[root@mycat58 ~]# vim  /usr/local/mycat/conf/datasources/prototypeDs.data{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ_WRITE","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"prototypeDs","password":"123456", 密码"type":"JDBC","url":"jdbc:mysql://localhost:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", 连接本机的数据库服务"user":"plj", 用户名"weight":0}:wq//在mycat服务器上运行数据库服务
    [root@mycat58 ~]# yum -y  install  mysql-server  mysql  安装软件
    [root@mycat58 ~]# systemctl start mysqld 启动服务
    [root@mycat58 ~]# mysql  连接服务
    mysql> create user plj@"%" identified by "123456";  创建plj用户
    Query OK, 0 rows affected (0.05 sec)
    mysql> grant all on *.* to plj@"%" ;   授予权限
    Query OK, 0 rows affected (0.39 sec)
    mysql> exit 断开连接
    Bye//启动mycat服务[root@mycat58 ~]# /usr/local/mycat/bin/mycat helpUsage: /usr/local/mycat/bin/mycat { console | start | stop | restart | status | dump }[root@mycat58 ~]# /usr/local/mycat/bin/mycat startStarting mycat2...//半分钟左右 能看到端口[root@mycat58 ~]# netstat  -utnlp  | grep 8066tcp6       0      0 :::8066  :::*       LISTEN      57015/java          //连接mycat服务
    [root@mycat58 ~]# mysql -h127.0.0.1 -P8066 -umycat -p654321
    mysql> show databases;
    +--------------------+
    | `Database`         |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    +--------------------+
    3 rows in set (0.11 sec)//在mysql服务器上配置读写分离
    //添加数据源
    MySQL> /*+ mycat:createdatasource{
    "name":"whost56", "url":"jdbc:mysql://192.168.88.56:3306","user":"plja","password":"123456"}*/;
    Query OK, 0 rows affected (0.25 sec)
    //添加mysql57数据库服务器
    Mysql>/*+ mycat:createdatasource{
    "name":"rhost57", "url":"jdbc:mysql://192.168.88.57:3306","user":"plja","password":"123456"}*/;
    //查看数据源
    mysql> /*+mycat:showDataSources{}*/ \G//添加的数据源以文件的形式保存在安装目录下
    [root@mycat58 conf]# ls /usr/local/mycat/conf/datasources/
    prototypeDs.datasource.json  rhost57.datasource.json  whost56.datasource.json//在主服务器添加plja用户
    [root@mysql56 ~]# mysql 
    mysql> create user plja@"%" identified by "123456";
    Query OK, 0 rows affected (0.06 sec)
    mysql> grant all on *.* to  plja@"%";
    Query OK, 0 rows affected (0.03 sec)
    mysql>exit
    [root@mysql56 ~]#
    //在slave服务器查看是否同步成功
    [root@mysql57 ~]# mysql -e 'select user , host from mysql.user where user="plja"'
    +------+------+
    | user | host |
    +------+------+
    | plja | %    |
    +------+------+//创建集群
    [root@mycat58 ~]# mysql -h127.0.0.1 -P8066 -umycat -p654321
    //创建集群
    mysql>/*!mycat:createcluster{
    "name":"rwcluster",
    "masters":["whost56"],
    "replicas":["rhost57"]
    }*/ ;
    Mysql>
    //查看集群信息
    mysql> /*+ mycat:showClusters{}*/ \G//创建的集群以文件的形式保存在目录下
    [root@mycat58 conf]# ls /usr/local/mycat/conf/clusters/
    prototype.cluster.json  rwcluster.cluster.json//修改master角色主机仅负责写访问
    [root@mycat58 ~]# vim /usr/local/mycat/conf/datasources/whost56.datasource.json
    {"instanceType":"WRITE", 仅负责写访问}//修改slave角色主机仅负责读访问
    [root@mycat58 ~]# vim /usr/local/mycat/conf/datasources/rhost57.datasource.json
    {
    instanceType":"READ",仅负责读访问
    }//修改读策略
    [root@mycat58 ~]# vim /usr/local/mycat/conf/clusters/rwcluster.cluster.json 
    { "readBalanceType":"BALANCE_ALL_READ",}  //获取集群中允许读的数据源//重启mycat服务
    [root@mycat58 ~]# /usr/local/mycat/bin/mycat restart
  3. 测试
    //连接mycat服务,创建testdb测试数据库,并指定该数据库使用的集群
    [root@mycat58 ~]# mysql -h127.0.0.1 -P8066 -umycat -p654321 
    mysql> create database testdb;
    Query OK, 0 rows affected (0.30 sec)
    mysql> exit
    Bye
    //指定testdb库存储数据使用的集群
    [root@mycat58 ~]# vim /usr/local/mycat/conf/schemas/testdb.schema.json
    {"customTables":{},"globalTables":{},"normalProcedures":{},"normalTables":{},"schemaName":"testdb","targetName":"rwcluster", 添加此行,之前创建的集群名rwcluster"shardingTables":{},"views":{}
    }
    :wq
    //重启mycat,使得上配置生效
    [root@mycat58 ~]# /usr/local/mycat/bin/mycat restart//连接mycat数据库服务,并在testdb插入数据,可见主从都有插入的数据
    //另外连接从服务器并插入数据,而主服务器没有该数据,mycat可以查看到该数据.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11-新热文章-实时计算

热点文章-实时计算 1 今日内容 1.1 定时计算与实时计算 1.2 今日内容 kafkaStream 什么是流式计算 kafkaStream概述 kafkaStream入门案例 Springboot集成kafkaStream 实时计算 用户行为发送消息 kafkaStream聚合处理消息 更新文章行为数量 替换热点文章数据 2 实时…

备战蓝桥杯---最长公共子序列(LCS)模板

题目链接:最长公共子序列 import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner;public class Main {public static void main(String[] args){Scanner scannernew Scanner(System.in);int nscanner.nextInt();i…

C++ sleep相关延时函数

目录 秒相关单位进制转换 sleep() 函数: usleep() 函数: nanosleep() 函数: C11及以后版本的std::this_thread::sleep_for(): 秒相关单位进制转换 秒(second, s)是国际单位制(SI&#xff…

vue watch监听的多种使用

简述:vue 的watch的监听使用的几种写法。常用第4中写法。 一、$route监听路由跳转 前提:当需要前端监听路由跳转的时候,一般写在App.vue入口 //App.vue //vue2、uniapp写法 watch: {$route(to, from) {if (hasPermission(to.path)) {this…

能源照明运作机制与智能调控技术实现途径

随着城市化进程的加速,智慧城市已成为现代城市发展的重要方向。能源照明作为城市基础设施的重要组成部分,其运作机制与智能调控技术的实现对于提高城市能源利用效率、促进可持续发展具有重要意义。 能源照明是一个涵盖广泛、错综复杂的领域,它…

Redis中的集群(一)

集群 概述 Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能 节点 一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都…

【优选算法专栏】专题十六:BFS解决最短路问题(二)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

奇函数+(-)偶函数一定是非奇非偶函数?

今天遇到个有意思的题,跟大家分享一下,可能有的人不太了解: 首先说下结论:这题选D选项,以上均有可能; 开始证明: 非奇非偶函数的充要条件: 定义域是(一a,a)(a>0)或(一 oo,oo)的…

【Linux】软硬链接 / 动静态库

目录 一. 软硬链接1. 硬链接2. 软链接3. unlink4. 目录的硬链接 二. 动静态库1.1 静态库制作1.2 静态库使用2.1 动态库制作2.2 动态库使用3. 动态链接原理 一. 软硬链接 1. 硬链接 硬链接(hard link) 可以将它理解为原始文件的别名, 和原始文件使用相同的 inode 编号和 data …

Mysql底层原理七:InnoDB 行记录

1.行格式 1.1 Compact行格式 1.1.1 示意图 1.1.2 准备一下 1)建表 mysql> CREATE TABLE record_format_demo (-> c1 VARCHAR(10),-> c2 VARCHAR(10) NOT NULL,-> c3 CHAR(10),-> c4 VARCHAR(10)-> ) CHARSETascii ROW_FORMATCOM…

Blender怎么样启动默认移动和Cavity效果

在使用Blender的过程中,有一些特殊的技巧很重要。 比如默认地设置blender打开时,就是移动物体,这样怎么样设置的呢? 需要在界面里打开下面的菜单: 这样就找到默认设置的地方,把下面的移动勾选起来,这样点…

3.C++ Make

1.Makefile 1.1 什么是 Makefile 一个工程中有很多文件,文件之间都是相辅相成有着编译的先后顺序,但是如果自己手动根据编译顺序编译文件造成速度非常慢。Makefile 是”自动化编译“,只需一个 make 指令系统就会根据编译顺序帮自己编译文件…

【C/C++】C语言实现单链表

C语言实现单链表 简单描述代码运行结果 简单描述 用codeblocks编译通过 源码参考连接 https://gitee.com/IUuaena/data-structures-c.git 代码 common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDED#define ELEM_TYPE int //!< 链表元素类型/*! brief 返回值类…

TouchableOpacity和TouchableWithoutFeedback区别

TouchableOpacity和TouchableWithoutFeedback都是React Native中定义的可触摸组件&#xff0c;但它们之间有一些区别&#xff1a; 点击效果&#xff1a;TouchableOpacity在被按下时会有一个透明度变化的点击效果&#xff0c;而TouchableWithoutFeedback则没有点击效果。 子组…

Java-Tomcat

一、web补充技术 ①&#xff1a;B/S架构 主流的方式&#xff0c;只要有浏览器即可。编程方式直接基于socket即可 ②&#xff1a;javascript 简称js&#xff0c;早期只是实现在客户端的浏览器的动态效果&#xff0c;但服务端不会解释运行&#xff0c;所以本质上是静态资源。 …

UE4_动画基础_角色的缩放

以第三人称模板进行制作。 一、首先为角色缩放新建粒子效果 1、新建niagara system&#xff0c;重命名为NS_Shrink。 2、双击打开设置参数&#xff1a; 发射器重命名&#xff1a; Emitter State&#xff1a; 发射器一次喷发数量&#xff1a; 粒子初始大小&#xff0c;生命周…

Go协程池gopool源码解析

1、gopool简介 Repository&#xff1a;https://github.com/bytedance/gopkg/tree/develop/util/gopool gopool is a high-performance goroutine pool which aims to reuse goroutines and limit the number of goroutines. It is an alternative to the go keyword. gopool的…

【Linux进阶之路】地址篇

文章目录 一、ipv4地址1. 基本概念2. 分类3.CIDR4.特殊的ip地址 二、IP协议1. 协议字段2.分片与重组3.路由 三、NAT技术1.公有和私有2.NAT3.NAPT 四、ARP协议1.MAC地址2.ARP 五、DHCP协议六、DNS协议尾序 一、ipv4地址 1. 基本概念 概念&#xff1a;IP地址&#xff0c;英文全…

从零自制docker-8-【构建实现run命令的容器】

文章目录 log "github.com/sirupsen/logrus"args...go moduleimport第三方包失败package和 go import的导入go build . 和go runcli库log.SetFormatter(&log.JSONFormatter{})error和nil的关系cmd.Wait()和cmd.Start()arg……context.Args().Get(0)syscall.Exec和…

【Leetcode每日一题】 递归 - 验证二叉搜索树(难度⭐⭐)(53)

1. 题目解析 题目链接&#xff1a;98. 验证二叉搜索树 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 中序遍历是二叉树遍历中的一种重要方式&#xff0c;它按照左子树、根节点、右子树的顺序访问每个节点。这种方式…