Chinaunix首页 | 论坛 | 博客

OPS

  • 博客访问: 508163
  • 博文数量: 117
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1210
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-05 14:50
个人简介

hellow 运维

文章分类

全部博文(117)

文章存档

2019年(1)

2018年(1)

2017年(45)

2016年(38)

2015年(32)

我的朋友

分类: 系统运维

2015-09-24 16:35:03

一、基本概念
mysql下载:

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

   

二、实战步骤:
    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文件位置即可


 


阅读(1111) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~