【马哥linux学员学习笔记】MySQL多实例详解
2016-01-11 00:00
567 查看
本文作者系马哥linux学员云中鹤。
目录
一、基本概念
1、MySQL多实例
就是在一台机器上面开启多个不同的端口,运行多个MySQL服务进程。这些MySQL多实例公用一套安装程序,使用不同的(也可以是相同的)配置文件,启动程序,数据文件。在提供服务时候,多实例MySQL在逻辑上看来是各自独立的,多个实例的自身是根据配置文件对应的设定值,来取得相关硬件资源的多少。
2、应用场景
1).采用了数据伪分布式架构的原因,而项目启动初期又不一定有那多的用户量,为此先一组物理数据库服务器,但部署多个实例,方便后续迁移
2).为规避mysql对SMP架构不支持的缺陷,使用多实例绑定处理器的办法,把不同的数据库分配到不同的实例上提供数据服务
3).一台物理数据库服务器支撑多个数据库的数据服务,为提高mysql复制的从机的恢复效率,采用多实例部署
4).已经为双主复制的mysql数据库服务器架构,想部分重要业务的数据多一份异地机房的热备份,而mysql复制暂不支持多主的复制模式,且不给用户提供服务,为有效控制成本,会考虑异地机房部署一台性能超好的物理服务器,甚至外加磁盘柜的方式,为此也会部署多实例;
5).传统游戏行业的MMO/MMORPG,以及Web Game,每一个服都对应一个数据库,而可能要做很多数据查询和数据订正的工作,为减少维护而出错的概率,也可能采用多实例部署的方式,按区的概念分配数据库;
3、作用与问题
1).有效利用服务器的资源,单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
2).资源互相争抢问题,比如 内存 ,cpu 需要开启 numa,并把 mysql 绑定到固定的核心上,网卡的中断请求,资源争用,最重要的是磁盘 IO
MySQL多实例配置方法
1.单一配置文件
2.多配置文件。
二、实战步骤:
1、同步时间
2、准备mysql依赖包
3、环境准备
3.1添加mysql用户
3.2编译安装mysql
4、安装MySQL多实例
5、准备配置文件
6、启动MySQL
7、登录mysql与一些安全措施
8、关闭MySQL
9,、提供简易管理脚本
10、为mysql的root用户创建密码
11、附,多配置文件安装mysql多实例,这里增加mysql 的3309端口
12、总结
1、同步时间
2、准备mysql依赖包
3、环境准备
3.1添加mysql用户
3.2编译安装mysql
4、安装MySQL多实例
5、准备配置文件
以上是简易的配置文件。这个配置文件只能让MySQL启动起来。
6、启动MySQL
7、登录mysql与一些安全措施
其余的操作类似,就不在演示
8、关闭MySQL
9,、提供简易管理脚本
10、为mysql的root用户创建密码
其余的操作一样
11、附,多配置文件安装mysql多实例,这里增加mysql 的3309端口
其余启动方法与关闭方法类似
12、总结:
1).通过这次mysql多实例安装,我们已经可以根据自己的喜好决定是通过多配置文件安装mysql多实例,还是但配置单文件安装。
2).过程比较简单,也没有什么特别高明的技巧,但是由小见大,以后配置文件可以在完善完善。
3).就是下面还会用心的写一系列的mysql博客,希望高手指点,不胜感激
参考链接:http://freeloda.blog.51cto.com/2033581/1349312
本文出自 “马哥Linux培训” 博客,请务必保留此出处http://mageedu.blog.51cto.com/4265610/1699066
目录
一、基本概念
1、MySQL多实例
就是在一台机器上面开启多个不同的端口,运行多个MySQL服务进程。这些MySQL多实例公用一套安装程序,使用不同的(也可以是相同的)配置文件,启动程序,数据文件。在提供服务时候,多实例MySQL在逻辑上看来是各自独立的,多个实例的自身是根据配置文件对应的设定值,来取得相关硬件资源的多少。
2、应用场景
1).采用了数据伪分布式架构的原因,而项目启动初期又不一定有那多的用户量,为此先一组物理数据库服务器,但部署多个实例,方便后续迁移
2).为规避mysql对SMP架构不支持的缺陷,使用多实例绑定处理器的办法,把不同的数据库分配到不同的实例上提供数据服务
3).一台物理数据库服务器支撑多个数据库的数据服务,为提高mysql复制的从机的恢复效率,采用多实例部署
4).已经为双主复制的mysql数据库服务器架构,想部分重要业务的数据多一份异地机房的热备份,而mysql复制暂不支持多主的复制模式,且不给用户提供服务,为有效控制成本,会考虑异地机房部署一台性能超好的物理服务器,甚至外加磁盘柜的方式,为此也会部署多实例;
5).传统游戏行业的MMO/MMORPG,以及Web Game,每一个服都对应一个数据库,而可能要做很多数据查询和数据订正的工作,为减少维护而出错的概率,也可能采用多实例部署的方式,按区的概念分配数据库;
3、作用与问题
1).有效利用服务器的资源,单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
2).资源互相争抢问题,比如 内存 ,cpu 需要开启 numa,并把 mysql 绑定到固定的核心上,网卡的中断请求,资源争用,最重要的是磁盘 IO
MySQL多实例配置方法
1.单一配置文件
2.多配置文件。
二、实战步骤:
1、同步时间
2、准备mysql依赖包
3、环境准备
3.1添加mysql用户
3.2编译安装mysql
4、安装MySQL多实例
5、准备配置文件
6、启动MySQL
7、登录mysql与一些安全措施
8、关闭MySQL
9,、提供简易管理脚本
10、为mysql的root用户创建密码
11、附,多配置文件安装mysql多实例,这里增加mysql 的3309端口
12、总结
1、同步时间
yum install epel* ntp 202.120.2.101 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 cmake -y
3、环境准备
3.1添加mysql用户
groupadd mysql useradd -g mysql mysql mkdir -pv /data/{3306,3307,3308}/data chown -R mysql.mysql /data/ cd /usr/local/src/
3.2编译安装mysql
tar -xf mysql-5.5.45.tar.gz cd mysql-5.5.45 chown mysql.mysql -R . cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DWITH_LIBWRAP=0 \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci gmake make install
4、安装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/
5、准备配置文件
mysqld_multi --example > /data/multi.cnf #提供多配置文件模板
vim /data/multi.cnf #修改模板,这里比较简易 [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = root #这个用户应该有关机权限,然后没有其他的权限。建议创建一个通用的,multi_admin用户控制其它的MySQL用户,这里有个例子 #GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'password' [mysqld1] socket = /tmp/mysql.sock1 port = 3306 pid-file = /data/3306/mysql.pid datadir = /data/3306/data [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /data/3307/mysql.pid datadir = /data/3307/data #language = /usr/local/mysql/share/mysql/english #user = unix_user1 [mysqld3] #mysqld = /path/to/mysqld_safe #ledir = /path/to/mysqld-binary/ #mysqladmin = /path/to/mysqladmin socket = /tmp/mysql.sock3 port = 3308 pid-file = /data/3308/mysql.pid datadir = /data/3308/data #language = /usr/local/mysql/share/mysql/swedish #user = unix_user2
以上是简易的配置文件。这个配置文件只能让MySQL启动起来。
6、启动MySQL
mysqld_multi --defaults-file=/data/multi.cnf start 1,2,3 ss -tnl #查看监听端口 LISTEN 0 50 *:3306 *:* LISTEN 0 50 *:3307 *:* LISTEN 0 50 *:3308 *:*
7、登录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文件位置即可
其余的操作一样
11、附,多配置文件安装mysql多实例,这里增加mysql 的3309端口
mkdir -pv /data/3309/data chown mysql.mysql -R 3309/ cd /usr/local/mysql scripts/mysql_install_db --datadir=/data/3309/data/ --user=mysql --basedir=/usr/local/mysql/ cp support-files/my-small.cnf /data/3309/my.cnf
vim /data/3309/my.cnf [client] port = 3309 #这里也需要注意下吧 socket = /tmp/mysql.sock4 [mysqld] port = 3309 #注意端口 socket = /tmp/mysql.sock4 #注意socket skip-external-locking key_buffer_size = 16K max_allowed_packet = 1M table_open_cache = 4 sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K thread_stack = 128K datadir=/data/3309/data #注意datadir server-id = 1 [mysqldump] quick max_allowed_packet = 16M
mysqld_safe --defaults-file=/data/3309/my.cnf 2&1> > /dev/null #启动mysqld
ss -tnl | grep 330 #查看端口 LISTEN 0 50 *:3306 *:* LISTEN 0 50 *:3307 *:* LISTEN 0 50 *:3308 *:* LISTEN 0 50 *:3309 *:*
其余启动方法与关闭方法类似
12、总结:
1).通过这次mysql多实例安装,我们已经可以根据自己的喜好决定是通过多配置文件安装mysql多实例,还是但配置单文件安装。
2).过程比较简单,也没有什么特别高明的技巧,但是由小见大,以后配置文件可以在完善完善。
3).就是下面还会用心的写一系列的mysql博客,希望高手指点,不胜感激
参考链接:http://freeloda.blog.51cto.com/2033581/1349312
本文出自 “马哥Linux培训” 博客,请务必保留此出处http://mageedu.blog.51cto.com/4265610/1699066
相关文章推荐
- MySQL中的integer 数据类型
- Linux socket 初步
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv