Mysql 实例

# 什么是 Mysql 单实例?
一个进程 + 多个线程 + 一个预分配的内存空间
# Mysql 多实例
多个进程 + 多个线程 + 多个预分配的内存空间(分配给每个 Mysql 单实例)

Mysql 多实例

# mysql 多实例,即在单台服务器上启动多个实例,也是多个配置文件启动数据库

mysql多个配置文件:
1.多个端口(配置 my.cnf,使用 TCP/IP 连接时指定相应端口)
2.多个 Socket 文件(配置 my.cnf,使用 Socket 连接时指定相应路径)
3.多个日志文件(配置 my.cnf)
4.多个 Server_id(配置 my.cnf)
5.多个数据目录(初始化时指定 datadir)

创建多实例目录

[root@db03 ~]# mkdir /service/{3307,3308,3309}

编辑配置文件

[root@db03 ~]# vim /service/3307/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3307/data
port = 3307
socket = /service/3307/mysql.sock
server_id = 1
log_err = /service/3307/data/mysql.err
log_bin = /service/3307/data/mysql-bin [root@db03 ~]# vim /service/3308/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3308/data
port = 3308
socket = /service/3308/mysql.sock
server_id = 2
log_err = /service/3308/data/mysql.err
log_bin = /service/3308/data/mysql-bin [root@db03 ~]# vim /service/3309/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3309/data
port=3309
socket=/service/3309/mysql.sock
server_id=3
log_err=/service/3309/data/mysql.err
log_bin=/service/3309/data/mysql-bin

初始化多实例数据目录

[root@db03 scripts]# ./mysql_install_db --defaults-file=/service/3307/my.cnf --user=mysql --basedir=/service/mysql --datadir=/service/3307/data

[root@db03 scripts]# ./mysql_install_db --defaults-file=/service/3308/my.cnf --user=mysql --basedir=/service/mysql --datadir=/service/3308/data

[root@db03 scripts]# ./mysql_install_db --defaults-file=/service/3309/my.cnf --user=mysql --basedir=/service/mysql --datadir=/service/3309/data

授权目录

[root@db03 service]# chown -R mysql.mysql /service/

启动多实例

[root@db03 service]# mysqld_safe --defaults-file=/service/3309/my.cnf &
[root@db03 service]# mysqld_safe --defaults-file=/service/3308/my.cnf &
[root@db03 service]# mysqld_safe --defaults-file=/service/3307/my.cnf & # 关闭其中的单个实例
[root@db03 service]# mysqladmin -uroot -p123 -S /service/3307/mysql.sock shutdown
[root@db03 service]# mysqladmin -uroot -p123 -S /service/3308/mysql.sock shutdown
[root@db03 service]# mysqladmin -uroot -p123 -S /service/3309/mysql.sock shutdown

连接多实例并验证

[root@db03 service]# mysql -S /service/3307/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
[root@db03 service]# mysql -S /service/3308/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 2 |
+---------------+-------+
[root@db03 service]# mysql -S /service/3309/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 3 |
+---------------+-------+

Mysql 多实例设置密码

[root@db03 service]# mysqladmin -S /service/3307/mysql.sock -uroot password '123'
Warning: Using a password on the command line interface can be insecure. [root@db03 service]# mysqladmin -S /service/3308/mysql.sock -uroot password '123'
Warning: Using a password on the command line interface can be insecure. [root@db03 service]# mysqladmin -S /service/3309/mysql.sock -uroot password '123'
Warning: Using a password on the command line interface can be insecure.

设置密码后连接

[root@db03 service]# mysql -S /service/3307/mysql.sock -uroot -p
Enter password: # 简单连接方式,也可以不指定密码,使用交互输入密码
[root@db03 service]# cat /usr/bin/mysql3307
mysql -S /service/3307/mysql.sock -uroot -p123 [root@db03 service]# cat /usr/bin/mysql3308
mysql -S /service/3308/mysql.sock -uroot -p123 [root@db03 service]# cat /usr/bin/mysql3309
mysql -S /service/3309/mysql.sock -uroot -p123 [root@db03 service]# chmod +x /usr/bin/mysql33*

Mysql 多实例主从复制

主库操作

1.开启binlog
[root@db03 service]# vim /service/3307/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3307/data
port = 3307
socket = /service/3307/mysql.sock
server_id = 1
log_err = /service/3307/data/mysql.err
log_bin = /service/3307/data/mysql-bin 2.主库授权一个用户,给从库用来连接
mysql> grant replication slave on *.* to rep@'172.16.1.%' identified by '123';
Query OK, 0 rows affected (0.18 sec) 3.主库查看binlog信息
mysql> show master status;
+------------------+----------+
| File | Position |
+------------------+----------+
| mysql-bin.000004 | 120 |
+------------------+----------+
1 row in set (0.00 sec)

从库的操作

# 从库需要知道的主库信息:主库的 IP,连接主库的用户和密码,binlog 信息
# 注意:每一个从库的 server_id 都不能相同,且都大于主库(主库 server_id = 1,从库 server_id > 1)
# 1.配置主从
change master to
master_host='172.16.1.53',
master_user='rep',
master_password='123',
master_log_file='mysql-bin.000004',
master_log_pos=120,
master_port=3307; # 1.开启 IO 线程 和 SQL 线程
mysql> start slave;
Query OK, 0 rows affected (0.08 sec)

IO线程 不为 YES

1.测试网络
[root@db03 ~]# ping 172.16.1.53 2.测试端口
[root@db03 ~]# telnet 172.16.1.53 3307 3.测试主库授权的用户登录
[root@db03 ~]# mysql -urep -p123 -h172.16.1.53 -P3307 4.反向解析
[root@db03 service]# vim /service/3307/my.cnf
skip-name-resolve 5.UUID相同
[root@db03 ~]# cat /service/3307/data/auto.cnf
[auto]
server-uuid=527f6221-c286-11ea-9ca7-000c29e19d84

SQL线程 不为 YES

# 一般情况:主库有数据,从库没有,或者从库有数据,主库没有
# 原因:从库获取主库的信息后(获取 bin-log 日志 file 名称,以及 bin-log 日志 的 position 位置),从库从 position 位置开始同步(bin-log 中记录执行过的 SQL 语句),如果从库已经存在某些表或其他数据,同步会出错
# 即主从数据库数据不一致
# 解决方法:删除从库多余数据,重新同步主库数据(先获取 Pos 值,再同步)

MySQL 多实例及其主从复制的更多相关文章

  1. Mysql多实例安装+主从复制+读写分离 -学习笔记

    Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...

  2. Windows下MySQL多实例安装/主从复制/重置密码

    Windows创建MySQL多实例 安装MYSQL和实例1 运行mysql-installer-community-5.7.16.0.msi 选择组件 MySQL Server 5.7.16 – X6 ...

  3. mysql多实例(个人的情况,不是大众的)里面有配置好的脚本+主从复制

    [root@DB-S ~]# ll /usr/local/|grep mysql lrwxrwxrwx. 1 root root 21 Jun 14 01:52 mysql -> /alidat ...

  4. MySQL多实例,主从同步

    由于背景原因,所做的主从同步还是要基于MySQL 5.1的版本,主从同步主要是一个数据库读写访问原来的数据库热度过大,需要做到使用从库对读分压. MySQL主从同步介绍     MySQL 支持单双向 ...

  5. Mysql多实例 安装以及配置

    MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...

  6. Mysql实现企业级数据库主从复制架构实战

    场景 公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公司业务中断,损失100万,老王做出深刻反省,公司 ...

  7. MySQL多实例部署与优化

    MySQL安装 ##上传MySQL安装包## mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ ###wget -q http://mirrors. ...

  8. MySQL多实例(二)

    一.多实例MySQL数据库原理 1.1:原理图 1.2:多实例原理(什么是多实例) 简单来说MySQL多实例就是在一台服务器上同时开启多个不用的服务端口(如:3306.3307),同时运行多个MySQ ...

  9. MySQL多实例介绍

    我们前面已经做了MySQL数据库的介绍以及为什么选择MySQL数据库,最后介绍了MySQL数据库在Linux系统下的多种安装方式,以及讲解了MySQL的二进制方式单实例安装.基础优化等,下面给大家讲解 ...

随机推荐

  1. leetcode 117. 填充每个节点的下一个右侧节点指针 II(二叉树,DFS)

    题目链接 https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/ 题目大意 给定一个二叉树 s ...

  2. oracle优化求生指南脚本记录

    1.查找未使用索引 /* Formatted on 2020/5/12 下午 03:32:39 (QP5 v5.163.1008.3004) */ WITH IN_PLAN_OBJECTS AS (S ...

  3. Python 身份证校验代码

    Python 身份证校验代码 居民身份证bai编号识别 1.身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本 ...

  4. CSS响应式布局学习笔记(多种方法解决响应式问题)

    在做web开发的工作中,会遇到需要我给页面根据设计的要求,进行响应式布局,这里跟大家分享下我对于响应式布局的解决方法: 我主要利用的是CSS3 媒体查询,即media queries,可以针对不同的媒 ...

  5. 订阅者模式,公众号、B站、快手用了都说好!

    大家好,今天和大家来聊一个新的设计模式--订阅者模式. 这个模式在我们的生活当中非常常见,可以说是几乎所有的媒体平台都用或多或少地用到了这个模式.比如公众号,我们来仔细梳理一下公众号这个平台当中的整个 ...

  6. error Unexpected use of comma operator no-sequences解决过程

    error Unexpected use of comma operator no-sequences解决过程 报错内容: ERROR in ./pages/course/_id.vue friend ...

  7. jemeter断言和性能分析

    一.添加断言 1.原因:检查是否有该结果,一般一个请求过去除了400和500的只要通过的都会代表请求成功,比如登录页面及时填写了错误密码,虽然会返回密码错误,但这个请求还是成功的,所以我们要添加断言, ...

  8. 【PC Basic】CPU、核、多线程的那些事儿

    一.CPU与核的概念 1.半导体中名词[Wafer][Chip][Die]中文名字和用途 Wafer--晶圆 wafer 即为图片所示的晶圆,由纯硅(Si)构成.一般分为6英寸.8英寸.12英寸规格不 ...

  9. 慕课网金职位 Python工程师 百度网盘下载

    百度网盘链接:https://pan.baidu.com/s/1xshLRO3ru0LAsQQ0pE67Qg 提取码:bh9f 如果失效加我微信:610060008[视频不加密,资料代码齐全,超清一手 ...

  10. php中一种单引号逃逸造成的注入

    demo如下: $post = $_POST; $sql=''; $array['name'] = $post['name']; $array['age'] = 18; $array['addr'] ...