本文共 5302 字,大约阅读时间需要 17 分钟。
一、mysql多实例的原理
mysql多实例,简单的说,就是在一台服务器上开启多个不同的mysql服务端口(如3306,3307),运行多个mysql服务进程。这些服务进程通过不同的socket监听不同的服务端口,来提供各自的服务。
这些mysql实例共用一套mysql安装程序,使用不同的my.cnf配置文件、启动程序、数据文件。在提供服务时,mysql多实例在逻辑上看来是各自独立的,各个实例之间根据配置文件的设定值,来取得服务器的相关硬件资源。
二、mysql多实例的特点
2.1 有效的利用服务器资源
当单个服务器资源有剩余时,可以充分利用剩余的服务器资源来提供更多的服务。
2.2 节约服务器资源
当公司资金紧张,但是数据库需要各自提供独立服务,而且需要主从同步等技术时,使用多实例就最好了。
2.3 出现资源互相抢占问题
当某个实例服务并发很高或者有慢查询时,会消耗服务器更多的内存、CPU、磁盘IO等资源,这时就会导致服务器上的其它实例提供访问的质量下降,出现服务器资源互相抢占的现象。
三、mysql多实例应用场景
3.1 资金紧张型公司的选择
当公司业务访问量不太大,又舍不得花钱,但同时又希望不同业务的数据库服务各自独立,而且需要主从同步进行等技术提供备份或读写分离服务时,使用多实例是最好不过的。
3.2 并发访问不是特别大的业务
当公司业务访问量不太大,服务器资源基本闲置的比较多,这是就很适合多实例的应用。如果对SQL语句优化的好,多实例是一个很值得使用的技术。即使并发很大,只要合理分配好资源,也不会有太大问题。
四MySQL5.7部署方法
第一种方法我们可以把各个实例的配置文件分开,管理比较方便。
第二种方法就是把多个实例都放到一个配置文件中,这个管理不是很方便。
注:在此我们选择第一种方法,而且以下实验我们全部是在此方法下进行的。
五MySQL5.7多实例部署
1、首先源码安装、
系统环境:centos7.2 x86_64
因为 centos7.2 默认安装了 mariadb-libs,
所以先要卸载掉 查看是否安装 mariadb
rpm -qa | grep mariadb 卸载 mariadb rpm -e --nodeps mariadb-libsMySQL5.7
2、安装依赖包
注: 相关依赖包的作用 cmake:由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译 器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。 Boost #从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求 必须安装 boost1.59.0 或以上版本 GCC 是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装 GCC bison:Linux 下 C/C++语法分析器 ncurses:字符终端处理库 1)安装文件准备 下载 cmake-3.5.tar.gz http://www.cmake.org/download/ 下载 ncurses-5.9.tar.gz ftp://ftp.gnu.org/gnu/ncurses/ 下载 bison-3.0.4.tar.gz http://ftp.gnu.org/gnu/bison/ 下载 mysql-5.7.13.tar.gz wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz 下载 Boost_1_59_0.tar.gz wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz2)安装 CMAKE 及必要的软件
安装 cmake cmake –version ---查看 cmake 版本 安装 ncurses---------./bootstrap && gmake && gmake install 安装 ncurses---------./configure && make && make install 安装 bison-----------./configure && make && make install 安装 bootst-----------mv boost_1_59_0 /usr/local/boost 3)创建 mysql 用户和用户组及目录 # groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql ---新建 msyql 组和 msyql 用 户禁止登录 shell #mkdir /usr/local/mysql ---创建目录 #mkdir /usr/local/mysql/data ---数据库目录3、编译安装 mysql 解压 mysql 源码包
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIBE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_SYSTEMD=1 -DWITH_BOOST=/usr/local/boost && make && make install
注 1:配置解释:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql [MySQL 安装的根目录] -DMYSQL_DATADIR=/usr/local/mysql /data [MySQL 数据库文件存放目录] -DSYSCONFDIR=/etc [MySQL 配置文件所在目录] -DWITH_MYISAM_STORAGE_ENGINE=1 [添加 MYISAM 引擎支持 ] -DWITH_INNOBASE_STORAGE_ENGINE=1 [添加 InnoDB 引擎支持 ]-DWITH_ARCHIVE_STORAGE_ENGINE=1 [添加 ARCHIVE 引擎支持 ]
-DMYSQL_UNIX_ADDR=/usr/local/mysql /mysql.sock [指定 mysql.sock 位置 ] -DWITH_PARTITION_STORAGE_ENGINE=1 [安装支持数据库分区 ] -DEXTRA_CHARSETS=all [使 MySQL 支持所有的扩展字符] -DDEFAULT_CHARSET=utf8 [设置 MySQL 的默认字符集为utf8] -DDEFAULT_COLLATION=utf8_general_ci [设置默认字符集校对规则 ] -DWITH-SYSTEMD=1 [可以使用 systemd 控制 mysql 服务] -DWITH_BOOST=/usr/local/boost [指向 boost 库所在目录] 更多参数执行 cmake . –LH4、设置权限并初始化 MySQL 系统授权表
# cd /usr/local/mysql # chown -R mysql:mysql . ---更改所有者,属组,注意是 mysql . # bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 注 1:以 root 初始化操作时要加--user=mysql 参数,生成一个随机密码(注意保存登录时用) 注 2:MySQL 5.7.6 之前的版本执行这个脚本初始化系统数据库 /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data # 5.7.6 之后版本初始系统数据库脚本(本文使用此方式初始化) #/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 注意:如果使用–initialize 参数初始化系统 数据库 之后,会生成 root 用户的一个临时密码, 5、创建配置文件 # cd /usr/local/mysql/support-files ---进入 MySQL 安装目录支持文件目录 # cp my-default.cnf /etc/my.cnf ---复制模板为新的配置文件, #vim /etc/my.cnf [mysqld] user = mysql basedir = /usr/local/mysql port = 3306 server-id = 3306 datadir = /usr/local/mysql/data socket = /usr/local/mysql/mysql.sock log-error = /usr/local/mysql/data/mysql.err pid-file = /usr/local/mysql/data/mysqld.pid [mysql] auto-rehash [client] socket = /usr/local/mysql/mysql.sock #cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system #systemctl enable mysqld(自动启动) #systemctl start mysqld(启动成功) #ss -anput |grep mysqld #mysql -u 用户 -p 密码 登录即可到这安装完成
6、部署多实例
# mkdir -pv /usr/local/mysql3307/data
#chown mysql:mysql /usr/local/mysql3307/data/ #vim /etc/my3307.cnf [mysqld] user = mysql server-id = 3307 port = 3307 basedir = /usr/local/mysql datadir = /usr/local/mysql3307/data socket = /usr/local/mysql3307/mysql3307.sock log-error = /usr/local/mysql3307/data/mysql3307.err pid-file = /usr/local/mysql3307/data/mysqld3307.pid [mysql] auto-rehash [client] port = 3307 socket = /usr/local/mysql3307/mysql3307.sock #mysqld --defaults-file=/etc/my3307.cnf --initialize --user=mysql --basedir=/usr/local/mysql #mysqld --defaults-file=/etc/my3307.cnf #ss -anput |grep mysqld tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=5355,fd=31)) tcp LISTEN 0 80 :::3307 :::* users:(("mysqld",pid=5528,fd=20)) #mysql -h 127.0.0.1 -u root -P3307 -p到这就大功告成
验证一下吧:1:登录3307创建个库,表。2:登录3306查看如果没有你在3307所创建的表说明成功。
转载地址:http://szxvb.baihongyu.com/