设为首页 收藏本站
查看: 567|回复: 0

[经验分享] MySQL多实例介绍与创建

[复制链接]

尚未签到

发表于 2018-10-5 11:03:01 | 显示全部楼层 |阅读模式
一、MySQL 多实例介绍

1.MySQL 多实例介绍
  MySQL 多实例:简单理解就是在一台服务器上,MySQL 通过开启多个不同的端口(3306、3307、3308)来运行多个服务进程。这些 MySQL 服务进程通过不同的 socket 来监听不同的实例端口,进而实现互不干扰的提供各自的服务。
  在同一台服务器上的 MySQL 多实例是共用一套 MySQL 应用程序,因此我们在部署 MySQL 的时候只需要部署一次 MySQL 程序即可,只是 MySQL 多实例之间会使用各自不同的 my.cnf 配置文件、启动程序和数据文件。在提供服务方面,MySQL 多实例在逻辑上看起来各自是独立的、互不干涉的,并且多个实例之间是根据配置文件的设定值来获取相关服务器的硬件资源。
  当然像云数据库(RDS)都是每个实例单独部署一个 MySQL 程序,以便做的各种操作都不会互相影响;

2.MySQL 多实例优缺点

优点
  (1)更充分利用服务器资源
  当物理机配置比较高,单个实例无法充分使用服务器资源时,导致服务器资源过剩时,可以充分利用剩余的资源来提供更多的服务,或者是不同的业务错高峰运行;
  (2)节约服务器资源
  当公司预算不足,但是我们又需要使用主从同步技术,这时多实例是最好的选择;
  (3)提高 MySQL 服务性能
  MySQL 数据库随着连接数的上升,性能会出现下降。所以我们可以使用 MySQL 多实例来分担 MySQL 数据库的连接数;

缺点
  (1)多实例资源互相抢占的问题
  当某个服务实例并发很高或者有慢查询时,整个实例会消耗更多的硬件资源,例如内存、CPU 和 IO 资源。这样必将导致服务器上的其他实例服务质量的下降,会对服务造成一定的影响。

3.MySQL 多实例实现方式
  mysql 多实例一般来讲,有两种方案可以实现,两种方案各有利弊

(1) 基于多配置文件
  可以通过使用过个配置文件来启动不同的 MySQL 进程,以此来实现多实例的创建;
  优点: 配置简单,逻辑也比较简单
  缺点: 如果实例太多,管理起来可能不是太方便

(2) 基于 mysqld_multi
  通过官方自带的 mysqld_multi 工具来创建多实例,使用单独配置文件来实现多实例的管理
  优点: 便于集中管理
  缺点: 不方便针对每个实例的配置进行定制

二、MySQL 多实例的部署

1.环境介绍

port
socket
conf
3307
/tmp/mysql3307.sock
/data/mysql/mysql3307/my3307.cnf
3308
/tmp/mysql3308.sock
/data/mysql/mysql3307/my3308.cnf
2.MySQL 3307 实例部署

(1) 装相关依赖
  

# yum install libaio -y  

(2) 下载 MySQL 二进制安装包
  国内源:
  

# wget -P /opt/  http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  

  国外源:
  

# wget -P /opt/  https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  

(3) 创建用户
  

# useradd  -s /sbin/nologin  -M mysql  

(4) 解压软连接 MySQL 二进制包
  

# mkdir /opt/mysql/  
# tar zxf /opt/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /opt/mysql/
  
# cd /usr/local/
  
# ln -s /opt/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 mysql
  

(5) 创建数据库相关目录
  

# mkdir -pv /data/mysql/mysql3307/{data,logs,tmp}   

(6) 修改相关目录权限
  

# chown -R mysql.mysql /usr/local/mysql  
# chown -R mysql.mysql /data
  

(7) 创建配置文件
  我们使用的配置文件为:/data/mysql/mysql3307/my3307.cnf
  

# cat > /data/mysql/mysql3307/my3307.cnf   
skip_slave_start = 1
  
max_relay_log_size = 128M
  
relay_log_purge = 1
  
relay_log_recovery = 1
  
relay-log=relay-bin

  
relay-log-index =>  
log_slave_updates = ON
  
#slave-skip-errors=1032,1053,1062
  
#skip-grant-tables
  

  
####### buffers & cache ######
  
table_open_cache = 2048
  
table_definition_cache = 2048
  
table_open_cache = 2048
  
max_heap_table_size = 96M
  
sort_buffer_size = 128K
  
join_buffer_size = 128K
  
thread_cache_size = 200
  
query_cache_size = 0
  
query_cache_type = 0
  
query_cache_limit = 256K
  
query_cache_min_res_unit = 512
  
thread_stack = 192K
  
tmp_table_size = 96M
  
key_buffer_size = 8M
  
read_buffer_size = 2M
  
read_rnd_buffer_size = 16M
  
bulk_insert_buffer_size = 32M
  

  
#myisam
  
myisam_sort_buffer_size = 128M
  
myisam_max_sort_file_size = 10G
  
myisam_repair_threads = 1
  

  
#innodb
  
innodb_buffer_pool_size = 100M
  
innodb_buffer_pool_instances = 1
  
innodb_data_file_path = ibdata1:100M:autoextend
  
innodb_flush_log_at_trx_commit = 2
  
innodb_log_buffer_size = 8M
  
innodb_log_file_size = 100M
  
innodb_log_files_in_group = 3
  
innodb_max_dirty_pages_pct = 50
  
innodb_file_per_table = 1
  
innodb_rollback_on_timeout
  
innodb_io_capacity = 2000
  
transaction_isolation = READ-COMMITTED
  
innodb_flush_method = O_DIRECT
  
EOF
  

(8) 初始化 3307 实例数据库
  

# cd /usr/local/mysql  
# ./bin/mysqld --defaults-file=/data/mysql/mysql3307/my3307.cnf   --initialize
  

(9) 启动实例 3307
  

# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3307/my3307.cnf &  

(10) 登录 3307 实例
  注意:第一次登录需要用初始密码登录;
  

# mysql -uroot -p -S /tmp/mysql3307.sock  

(11) 修改初始密码
  查看初始密码:
  

# grep "password" /data/mysql/mysql3307/data/error.log  
2018-01-09T07:51:15.311189Z 1 [Note] A temporary password is generated for root@localhost: /+dYyouJn2/g
  

  初始密码为: /+dYyouJn2/g 每次初始化密码都不会相同;
  登录数据库修改密码为:unixfbi.com
  

# mysql -uroot -p 初始密码 -S /tmp/mysql3307.sock
  
mysql>>  

  或者:
  

mysql> SET PASSWORD=PASSWORD('unixfbi.com');  
mysql> flush privileges;
  

3.MySQL 3308 实例部署

(1) 创建数据库相关目录
  

# mkdir -pv /data/mysql/mysql3308/{data,logs,tmp}   

(2) 创建配置文件
  我们使用的配置文件为:/data/mysql/mysql3308/my3308.cnf
  

cp /data/mysql/mysql3307/my3307.cnf    /data/mysql/mysql3308/my3308.cnf  
sed -i  's/3307/3308/g'   /data/mysql/mysql3308/my3308.cnf
  

  我们这里复制一下 3307 实例的配置文件,然后修改一下。其实需要修改的内容为:
  

# grep "3307" /data/mysql/mysql3308/my3308.cnf  
port = 3307
  
socket = /tmp/mysql3307.sock
  
datadir = /data/mysql/mysql3307/data
  
tmpdir = /data/mysql/mysql3307/tmp
  
port = 3307
  
socket = /tmp/mysql3307.sock
  
server-id = 1003307
  
log-bin = /data/mysql/mysql3307/logs/mysql-bin
  

(3) 修改相关目录限
  

# chown -R mysql.mysql /data/mysql/mysql3308/  

(4) 初始化 3308 实例数据库
  

# ./bin/mysqld --defaults-file=/data/mysql/mysql3308/my3308.cnf   --initialize    

(5) 启动实例 3308
  

# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3308/my3308.cnf &  

(6) 登录 3308 实例
  注意:第一次登录需要用初始密码登录;
  

# mysql -uroot -p -S /tmp/mysql3308.sock  

(7) 修改初始密码
  查看初始密码:
  

# grep "password" /data/mysql/mysql3308/data/error.log  
2018-01-09T09:00:33.711566Z 1 [Note] A temporary password is generated for root@localhost: 0L8fUEe,j,;w
  

  初始密码为: 0L8fUEe,j,;w 每次初始化密码都不会相同;
  登录数据库修改密码为:unixfbi.com
  

# mysql -uroot -p 初始密码 -S /tmp/mysql3308.sock
  
mysql>>  

  或者:
  

mysql> SET PASSWORD=PASSWORD('unixfbi.com');  
mysql> flush privileges;
  

(8) 设置登录后标识
  

# cat > /etc/my.cnf    

三、MySQL 多实例常用操作

1.MySQL 多实例常用命令
  启动
  

/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3308/my3308.cnf &  

  停止
  

mysqladmin -S /tmp/mysql3308.sock  -p shutdown   

  登录
  

mysql -S /tmp/mysql3308.sock -uroot -p   

2.MySQL 常用命令介绍

方式一:
  

# /usr/local/mysql/bin/mysqld_safe --defaults-file=/path/my.cnf &  

  这种方式还需要修改 mysqld_safe 脚本

方式二:
  

/usr/local/mysql/bin/mysqld --defaults-file=/path/my.cnf &  

  这是最省事的一种启动方式

方式三:
  

# /usr/local/mysql/bin/mysqld_multi start 3307  

  这种方式必须是以 mysqld_multi 方式创建的多实例才可以使用该方式启动或者停止;
  参考文档
  https://www.cnblogs.com/ZhangRuoXu/p/6706427.html
  转:
  http://www.unixfbi.com/324.html



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-612587-1-1.html 上篇帖子: Centos7编译安装Mysql 下篇帖子: centos7 卸载源码安装的mysql 5.7.21-f1221283的博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表