超简单的mysql多实例布置

一、基本概念
mysql下载:http://mirrors.sohu.com/mysql/MySQL-5.5/
1、MySQL多实例
就是在一台机器上面开启多个不同的端口,运行多个MySQL服务进程。这些MySQL多实例公用一套安装程序,使用不同的(也可以是相同的)配置文件,启动程序,数据文件。在提供服务时候,多实例MySQL在逻辑上看来是各自独立的,多个实例的自身是根据配置文件对应的设定值,来取得相关硬件资源的多少。
2、应用场景
1.采用了数据伪分布式架构的原因,而项目启动初期又不一定有那多的用户量,为此先一组物理数据库服务器,但部署多个实例,方便后续迁移

  1. 为规避mysql对SMP架构不支持的缺陷,使用多实例绑定处理器的办法,把不同的数据库分配到不同的实例上提供数据服务
  2. 一台物理数据库服务器支撑多个数据库的数据服务,为提高mysql复制的从机的恢复效率,采用多实例部署
  3. 已经为双主复制的mysql数据库服务器架构,想部分重要业务的数据多一份异地机房的热备份,而mysql复制暂不支持多主的复制模式,且不给用户提供服务,为有效控制成本,会考虑异地机房部署一台性能超好的物理服务器,甚至外加磁盘柜的方式,为此也会部署多实例;
  4. 传统游戏行业的MMO/MMORPG,以及Web Game,每一个服都对应一个数据库,而可能要做很多数据查询和数据订正的工作,为减少维护而出错的概率,也可能采用多实例部署的方式,按区的概念分配数据库;
    3、作用与问题
    1、有效利用服务器的资源,单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
    2、资源互相争抢问题,比如 内存 ,cpu 需要开启 numa,并把 mysql 绑定到固定的核心上,网卡的中断请求,资源争用,最重要的是磁盘 IO

二、实战步骤:
1、同步时间
2、准备mysql依赖包
3、环境准备
2.添加mysql用户
#3.编译安装mysql(我这里是mysql-5.5.33-linux2.6-x86_64.tar.gz)
4、安装MySQL多实例
5、准备配置文件
6、启动MySQL
7、登录mysql与一些安全措施
8、关闭MySQL
9,、提供简易管理脚本
10、为mysql的root用户创建密码

1:同步时间:
yum install -y ntp
ntpdate 202.120.2.101
hwclock -w
2:准备mysql依赖包
yum install -y autoconf automake zlib libxml ncurses-devel libgcrypt libtool openssl
yum install -y
3、环境准备
3.1添加mysql用户
groupadd mysql
useradd -g mysql mysql
mkdir -pv /data/{3306,3307,3308}
chown -R mysql.mysql /data/
3.2: 解压mysql安装包并初始化mysql数据库
cd /usr/local
tar zxvf mysql-5.5.33-linux2.6-x86_64.tar.gz

ln -sv mysql-5.5.33-linux2.6-x86_64 mysql
chown -R root.mysql mysql/*
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/
3.3:准备配置文件:
mysqld_multi --example > /data/multi.cnf #提供多配置文件模板
3.4:修改模板
vim /data/multi.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
#password = my_password

[mysqld1]
socket = /tmp/mysql1.sock
port = 3306
pid-file = /data/3306/mysql.pid
datadir = /data/3306/
#language = /usr/local/mysql/share/mysql/english
#user = unix_user1

[mysqld2]
#mysqld = /path/to/mysqld_safe
#ledir = /path/to/mysqld-binary/
#mysqladmin = /path/to/mysqladmin
socket = /tmp/mysql2.sock
port = 3307
pid-file = /data/3307/mysql.pid
datadir = /data/3307
#language = /usr/local/mysql/share/mysql/swedish
#user = unix_user2
[mysqld3]
socket = /tmp/mysql3.sock
port = 3308
pid-file = /data/3308/mysql.pid
datadir = /data/3308/
#language = /usr/local/mysql/share/mysql/estonia
#user = unix_user3
注释:如果有一些配置需要改动请在[mysql#]下添加相应的值就好了
改变配置文件:
cp /data/multi.cnf /etc/my.cnf
启动mysql多实例:
mysqld_multi start 1,2,3
ss -tnul #查看监听端口
LISTEN 0 50 :3306 :
LISTEN 0 50
:3307 :
LISTEN 0 50 :3308 :*
、登录mysql与一些安全措施

mysql -S /tmp/mysql.sock1 #指定socket登录

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.04 sec)

mysql> select User,Host from mysql.user;
+------+-----------+
| User | Host |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | node1 |
| root | node1 |
+------+-----------+
6 rows in set (0.01 sec)

mysql> delete from mysql.user where User='';
Query OK, 2 rows affected (0.00 sec)

mysql> delete from mysql.user where Host='::1';
Query OK, 1 row affected (0.00 sec)

mysql> delete from mysql.user where Host='node1';
Query OK, 1 row affected (0.00 sec)
其余的操作类似,就不在演示

8、关闭MySQL

mysqladmin -S /tmp/mysql.sock1 shutdown 建议使用
musqld_multi --defaults-file stop [#,#]
killall mysqld 不建议使用
9,、提供简易管理脚本

#!/bin/bash
#
basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
conf=/data/multi.cnf
export PATH=$bindir:/$PATH
if test -x $bindir/mysqld_multi
then
mysqld_multi="$bindir/mysqld_multi";
else
echo "Can't execute $bindir/mysqld_multi from dir $basedir";
exit;
fi
case "$1" in
'start' )
"$mysqld_multi" --defaults-extra-file=$conf start $2
;;
'stop' )
"$mysqld_multi" --defaults-extra-file=$conf stop $2
;;
'report' )
"$mysqld_multi" --defaults-extra-file=$conf report $2
;;
'restart' )
"$mysqld_multi" --defaults-extra-file=$conf stop $2
"$mysqld_multi" --defaults-extra-file=$conf start $2
;;
*)
echo "Usage: $0 {start|stop|report|restart}" >&2
;;
esac
10、为mysql的root用户创建密码

mysqladmin -uroot -S /tmp/mysql.sock2 password "123456" #指定socket文件位置即可

转载于:https://blog.51cto.com/9025736/2061905

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

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

相关文章

java程序设计计算器_Java程序设计计算器(含代码)

Java程序课程设计任务书实用性计算器的设计与开发1、主要内容:开发一个实用型的计算器程序,实现基本的计算功能同时并进行相应的功能拓展,使其具更加人性化的功能。我们可以用其进行相应的计算功能来方便我们的学习,代替我们进行一…

mybatis配置insert/update/delete同一个模板

insert,update,delete标签只是一个模板,在操作时是以sql语句为核心的, 即在做增/删/改时,insert/update/delete便签可以通用, 但做查询时只能用 select 标签 提倡什么操作就用什么标签 这就是为什么 ex…

Mybatis配置文件resultMap映射啥时候可写可不写?

1、student实体类 public class Student {private Integer id;//编号private String name;//姓名private Double sal;//薪水public Student(){}public Student(Integer id, String name, Double sal) {this.id id;this.name name;this.sal sal;}public Integer getId() {ret…

arithmetic java_Java:Arithmetic

好吧,事实上你有方法设置变量叫get - 这显然不是一个好主意,并且没有缩进......但它应该有效。但是,你还没有展示出你是如何使用它的。也许你实际上并没有被称为setter方法?以下是相同代码但具有不同名称的示例,以及使…

网络框架 Retrofit(三)

简单实现Retrofit(替代Okhttp) 1.定义注解参数 Documented Target(PARAMETER) Retention(RUNTIME) public interface Field {String value(); } 复制代码Documented Target(METHOD) Retention(RUNTIME) public interface Get {String value() default &q…

Tomcat提示“XDB 的服务器 localhost 要求用户名和密码”

在地址栏输入http://localhost:8080/(8080是TOMCAT的端口号)测试,系统提示“XDB 的服务器 localhost 要求用户名和密码”,并弹出输入用户、密码的窗口,查看代码没问题,不解,上网上查资料,是因为…

java jqgrid json格式_jqGrid 数据之 Json

Json数据需要定义jsonReader来跟服务器端返回的数据做对应,其默认值: jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, c…

django 中静态文件项目加载问题

问题描述: django项目中创建了多个app后,每个app中都有对应的static静态文件。整个项目运行时这些静态文件的加载就是一个问题,因为整个项目我只参与了一部分,项目部署之类的并没有参与。我写的部分的js代码遇到点问题&#xff0c…

Erlang/OTP设计原则(文档翻译)

http://erlang.org/doc/design_principles/des_princ.html 图和代码皆源自以上链接中Erlang官方文档,翻译时的版本为20.1。 这个设计原则,其实是说用户在设计系统的时候应遵循的标准和规范。阅读前我一直以为写的是作者在设计 Erlang/OTP 框架时的一些原…

存储过程的参数可以使用sql的函数

系统已做成存储过程,调用方法如下: crh_entry(yyyymmdd,起始时间,结束时间); 示例1:进行2016年4月10日10时到12时的测试,应写为: exec crh_entry(20160410,10,11); 示例2:进行2016年4月8日14时到15时的…

java如何实例化集合_如何在java中实例化一个Queue对象?

Queue是一个接口,这意味着你不能直接构造一个Queue 。最好的select是构造一个已经实现Queue接口的类,如下所示: AbstractQueue , ArrayBlockingQueue , ConcurrentLinkedQueue , DelayQueue , D…

leetcode 121 股票买卖问题系列

描述: 给一些列数字,表示每条股票的价格,如果可以买卖一次(不能同一天买和卖),求最大利益(即差最大)。 其他三道问题是,如果能买卖无限次,买卖两次&#xff0…

Mybatis-jar-lib

csdn的下载好像和我有仇,上传资源不断提示:请您先登录 下载:http://pan.baidu.com/s/1pL2BAzT asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar mybatis-3.1.1.jar ----以上mybatis的--- log4j-1.2.16.jar ----以上log4j日志--…

java使用队列实现栈思路_算法面试:队列实现栈的方案

声明:码字不易,转载请注明出处,欢迎文章下方讨论交流。前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督。本篇介绍的是如何用两个队列实现栈的问题。这道题作为上一篇文章算法面试:栈实现队列的…

Uber如何使用go语言创建高效的查询服务

在2015年初我们创建了一个微服务,它只做一件事(也确实做得很好)就是地理围栏查询。一年后它成了Uber高频查询(QPS)服务,本次要讲的故事就是我们为什么创建这个服务,以及编程语言新秀Go如何帮我们…

centos7:塔建pure_ftpd虚拟用户

2019独角兽企业重金招聘Python工程师标准>>> 1.下载pure_ftpd,上传服务器,目录路径:/usr/local/src/ 下载地址:https://pan.baidu.com/s/1kWe8FAn 2.安装pure_ftpd cd /usr/local/srctar -xjf pure-ftpd-1.0.36.tar.bz2cd pure-ftpd-1.0.36./configure -…

java.lang.module_如何修复“java.lang.module.FindException:module java.se.ee not found”错误

我正在尝试打包我的kivy应用程序(python3),但是当我运行命令buildozer -v android debug时,看到这个错误# Cwd /home/javier/.buildozer/android/platform/android-sdkError occurred during initialization of boot layerjava.lang.module.FindExceptio…

寒武纪芯片——有自己的SDK,支持tf、caffe、MXNet

寒武纪芯片产品中心>智能处理器IP智能处理器IP MLU智能芯片 软件开发环境 Cambricon-1A 高性能硬件架构及软件支持兼容Caffe、Tensorflow、MXnet等主流AI开发平台,已多次成功流片 国际上首个成功商用的深度学习处理器IP产品,可广泛应用于计算机视觉、…

maven ssm框架 mysql_SSM框架(IDEA+Spring+SpringMVC+Maven+Mybatis+MySQL)

【实例简介】SSM框架(IDEASpringSpringMVCMavenMybatisMySQL),搭建SSM框架,利用mybatis-plus插件自动生成数据库相关代码。【实例截图】【核心代码】0d399d99-f108-4aaa-9c81-35b505c86e8a└── SSMManager├── pom.xml├── sql│ └── test.sql└── src…

spring框架的引入

spring框架给程序开发带来了春天,在很多项目里,可能不用struts,不用hibernate,但往往都有spring。 why? 因为每个项目都会涉及到对象的创建和对象之间的依赖。 一、传统的MVC开发 mvc的项目框架结构:Enti…