linux修改mysql配置文件_Mysql集群搭建(多实例、主从)(仅学习)

原文链接:https://blog.csdn.net/qq_21153619/article/details/81529880目录
1 MySQL多实例
一 、MySQL多实例介绍
1、什么是MySQL多实例
2、MySQL多实例的特点有以下几点
3、部署mysql多实例的两种方式
4、同一开发环境下安装多个数据库,必须处理以下问题
2 mysql多实例搭建
一、mysqld_multi搭建
1、下载免编译二进制包
2、解压和迁移
3、关闭iptables
4、关闭selinux
5、创建mysql系统用户和组
6、创建mysql目录
7、更改目录权限
8、添加环境变量
9、复制my.cnf文件到etc目录
10、修改my.cnf(在一个文件中修改即可)
11、 初始化数据库
13、设置启动文件
14、mysqld_multi进行多实例管理
15、修改密码
16、新建用户及授权
17、外部软件登录数据库
二、多配置文件搭建
1、安装包分发
2、卸载冗余数据库服务
3、安装数据库
4、启动mysql并查看状态
5、设置开机自启
6、设置初始密码
7、新建用户和修改权限
2 mysql集群搭建
一、mysql主从集群
1、建立siger用户并设置权限
2、修改配置文件
3、查看master状态
4、配置slave
5、启动从服务
6、查看slave状态
7、主从测试

1 MySQL多实例
一 、MySQL多实例介绍
1、什么是MySQL多实例
MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务。
2、MySQL多实例的特点有以下几点

  • 有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
  • 节约服务器资源
  • 资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降;

3、部署mysql多实例的两种方式
第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;
4、同一开发环境下安装多个数据库,必须处理以下问题

  • 配置文件安装路径不能相同
  • 数据库目录不能相同
  • 启动脚本不能同名
  • 端口不能相同
  • socket文件的生成路径不能相同

2 mysql多实例搭建
一、mysqld_multi搭建
1、下载免编译二进制包
下载地址:http://mirrors.sohu.com/mysql/MySQL-5.7/
mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
2、解压和迁移

  • cd /usr/local

#将安装包拖进local文件夹下并解压

  • tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
  • mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql

3、关闭iptables
#临时关闭

  • service iptables stop

#永久关闭

  • chkconfig iptables off

4、关闭selinux

  • vi /etc/sysconfig/selinux

#将SELINUX修改为DISABLED,即SELINUX=DISABLED

b8f26ecc15786890c4c8fcc4f4904ee0.png


5、创建mysql系统用户和组

  • groupadd -g 27 mysql
  • useradd -u 27 -g mysql mysql
  • id mysql

b0492aa9f7281971e0e7954ebdd99efc.png

6、创建mysql目录

  • mkdir -p /data/mysql/mysql_3306/data
  • mkdir -p /data/mysql/mysql_3306/log
  • mkdir -p /data/mysql/mysql_3306/tmp
  • mkdir -p /data/mysql/mysql_3307/data
  • mkdir -p /data/mysql/mysql_3307/log
  • mkdir -p /data/mysql/mysql_3307/tmp
  • mkdir -p /data/mysql/mysql_3308/data
  • mkdir -p /data/mysql/mysql_3308/log
  • mkdir -p /data/mysql/mysql_3308/tmp

281ad7d434b20ab7f3363a66d6111c23.png

7、更改目录权限#任意目录下,输入

  • chown -R mysql:mysql /data/mysql/
  • chown -R mysql:mysql /usr/local/mysql/

8、添加环境变量

  • echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
  • source /etc/profile

70ca5b275967c5323af0caf9caf8d23f.png

9、复制my.cnf文件到etc目录
#将原来的my.cnf文件删除了

  • cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

10、修改my.cnf(在一个文件中修改即可)

  • vi /etc/my.cnf
  • [client]
    port=3306
    socket=/tmp/mysql.sock
    [mysqld_multi]
    mysqld = /usr/local/mysql/bin/mysqld_safe
    mysqladmin = /usr/local/mysql/bin/mysqladmin
    log = /data/mysql/mysqld_multi.log
    [mysqld]
    basedir = /usr/local/mysql
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    #3306数据库
    [mysqld3306]
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/data/mysql/mysql_3306/data
    port=3306
    server_id=3306
    socket=/tmp/mysql_3306.sock
    log-output=file
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /data/mysql/mysql_3306/log/slow.log
    log-error = /data/mysql/mysql_3306/log/error.log
    binlog_format = mixed
    log-bin = /data/mysql/mysql_3306/log/mysql3306_bin
    #3307数据库
    [mysqld3307]
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/data/mysql/mysql_3307/data
    port=3307
    server_id=3307
    socket=/tmp/mysql_3307.sock
    log-output=file
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /data/mysql/mysql_3307/log/slow.log
    log-error = /data/mysql/mysql_3307/log/error.log
    binlog_format = mixed
    log-bin = /data/mysql/mysql_3307/log/mysql3307_bin
    #3308数据库
    [mysqld3308]
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/data/mysql/mysql_3308/data
    port=3308
    server_id=3308
    socket=/tmp/mysql_3308.sock
    log-output=file
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /data/mysql/mysql_3308/log/slow.log
    log-error = /data/mysql/mysql_3308/log/error.log
    binlog_format = mixed
    log-bin = /data/mysql/mysql_3308/log/mysql3308_bin

11、 初始化数据库 #初始化3306数据库

  • /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql_3306/data --defaults-file=/etc/my.cnf

57b1a145152a197d02f60bcdde79d4ca.png

09b3cc163a10c4c8e04edcac8848a831.png

#初始化3307数据库

  • /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql_3307/data --defaults-file=/etc/my.cnf

#初始化3308数据库

  • /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql_3308/data --defaults-file=/etc/my.cnf

12、查看数据库是否初始化成功
查看3306、3307、3308数据库

  • cd /data/mysql/mysql_3306/data/
  • cd /data/mysql/mysql_3307/data/
  • cd /data/mysql/mysql_3308/data/

cde1362b4b8d145cbecc2ecb0c422279.png


13、设置启动文件

  • cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

14、mysqld_multi进行多实例管理
启动全部实例:/usr/local/mysql/bin/mysqld_multi start
查看全部实例状态:/usr/local/mysql/bin/mysqld_multi report
启动单个实例:/usr/local/mysql/bin/mysqld_multi start 3306
停止单个实例:/usr/local/mysql/bin/mysqld_multi stop 3306
查看单个实例状态:/usr/local/mysql/bin/mysqld_multi report 3306
#启动全部实例

  • /usr/local/mysql/bin/mysqld_multi start
  • /usr/local/mysql/bin/mysqld_multi report

e034b854fd8a5b9797c61c1a88788550.png


# 查看启动进程

  • ps -aux | grep mysql

da3f95710d738160bd076f2aa78586d3.png


#进入tmp目录,查看sock文件

  • cd /tmp

81e59b896b954f00aacd2a6c34a0eb93.png


15、修改密码
mysql的root用户初始密码是空,所以需要登录mysql进行修改密码,下面以3306为例:

    • mysql -S /tmp/mysql_3306.sock
    • set password for root@'localhost'=password('xxxxxx');
    • flush privileges;

44a1676bd17c2c4a4d4ec69c6a50fed2.png


#修改3307数据库密码

  • mysql -S /tmp/mysql_3307.sock
  • set password for root@'localhost'=password('xxxxxx');
  • flush privileges;

#修改3308数据库密码

  • mysql -S /tmp/mysql_3307.sock
  • set password for root@'localhost'=password('xxxxxx');
  • flush privileges;

16、新建用户及授权
一般新建数据库都需要新增一个用户,用于程序连接,这类用户只需要insert、update、delete、select权限。这里赋予所有权限,以3306为例,3307、3308相同。
#新增一个用户,并授权如下:

  • grant ALL PRIVILEGES on *.* to admin@'%' identified by 'xxxxxx';
  • flush privileges

c366e64824dae7731d2549dfff197188.png

17、外部软件登录数据库

4173547d75f482f64117157a3463f760.png


图1

66e2cfc01c33f04d6f7b15c195eb8a1a.png


图2
二、多配置文件搭建
1、安装包分发
140搭建的有mysql数据库
#将数据库安装包分发到其他两台机器

  • scp -r mysql/ root@192.168.3.141:/usr/local/
  • scp -r mysql/ root@192.168.3.142:/usr/local/

2、卸载冗余数据库服务
#查找之前安装的数据库服务,若有,怎卸载数据库服务

  • rpm -qa|grep -i mysql
  • rpm -qa|grep -i MariaDB
  • rpm -ev mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

ca49acfa65f819af2f729066fd13b843.png
  • rpm -ev mysql-community-test-5.7.19-1.el7.x86_64 mysql-community-devel-5.7.19-1.el7.x86_64 mysql-community-libs-5.7.19-1.el7.x86_64 mysql-community-embedded-compat-5.7.19-1.el7.x86_64 mysql-community-embedded-devel-5.7.19-1.el7.x86_64 mysql-community-server-5.7.19-1.el7.x86_64 mysql-community-minimal-debuginfo-5.7.19-1.el7.x86_64 mysql-community-common-5.7.19-1.el7.x86_64 mysql-community-libs-compat-5.7.19-1.el7.x86_64 mysql-community-embedded-5.7.19-1.el7.x86_64 mysql-community-client-5.7.19-1.el7.x86_64 mysql-community-server-minimal-5.7.19-1.el7.x86_64 --nodeps

3、安装数据库在141上安装数据库
#安装mysql的环境

  • yum -y install gcc gcc-c++ gdb cmake ncurses-devel bison bison-devel

#解压mysql安装包

  • tar -zxvf MySQL-5.7.19-1.el7.x86_64_64.rpm-bundle.tar

0bdd79ec6858f5dcf032dfaad60d037a.png


#安装mysql服务

  • sudo rpm -ivh --force mysql-community-client-5.7.19-1.el7.x86_64.rpm mysql-community-common-5.7.19-1.el7.x86_64.rpm mysql-community-devel-5.7.19-1.el7.x86_64.rpm mysql-community-embedded-5.7.19-1.el7.x86_64.rpm mysql-community-embedded-compat-5.7.19-1.el7.x86_64.rpm mysql-community-embedded-devel-5.7.19-1.el7.x86_64.rpm mysql-community-libs-5.7.19-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm mysql-community-minimal-debuginfo-5.7.19-1.el7.x86_64.rpm mysql-community-server-5.7.19-1.el7.x86_64.rpm mysql-community-server-minimal-5.7.19-1.el7.x86_64.rpm mysql-community-test-5.7.19-1.el7.x86_64.rpm --nodeps

f985ccc44feef11a29b17cee46d54266.png


#查看安装的mysql服务

  • rpm -qa|grep -i mysql

1109fb877cb3b7ab841654ea47cab269.png

在142上安装数据库:与上面同样的操作
4、启动mysql并查看状态
#启动

  • service mysqld start

#查看数据库运行状态

  • service mysqld status

71343d4992fa13d835b7a0c5916bb201.png


#查看MySQL的进程

  • ps -aux|grep mysql

500a8d59bb8d09fc22e359844f226cdd.png


5、设置开机自启

  • systemctl enable mysqld.service

6、设置初始密码
#查看随机生成的mysql密码

  • grep "password" /var/log/mysqld.log

f9f4e40d617c1b52b21894dae3fc5da5.png


#登陆数据库客户端

  • mysql -u root -p

注意:用随机生成的密码
#设置新密码

  • set password = password('xxxxxx');

7、新建用户和修改权限
#修改root用户的权限

  • grant ALL PRIVILEGES on *.* to root@'%' identified by 'xxxxxx';

#创建amdin用户,并赋予限

  • CREATE USER 'admin'@'%' IDENTIFIED BY 'xxxxxx';
  • grant ALL PRIVILEGES on *.* to admin@'localhost' identified by 'xxxxxx';
  • FLUSH PRIVILEGES;

#查看用户的权限

  • select host,user from mysql.user;

2a3bbe52b5bac1aa9fddf050114ee2a3.png

在142上设置数据库:与上面同样的操作
2 mysql集群搭建
一、mysql主从集群
1、建立siger用户并设置权限
登陆140的mysql数据库

  • mysql -u root -p
  • CREATE USER 'siger'@'%'IDENTIFIED BY 'xxxxxx';
  • GRANT ALL PRIVILEGES ON *.* TO 'siger'@'%';
  • grant ALL PRIVILEGES on *.* to siger@'localhost' identified by 'xxxxxx';
  • FLUSH PRIVILEGES;
  • select host,user from mysql.user;

4e2f84c8d0a19a49faaf7ebe1db8a770.png


2、修改配置文件
修改三台数据库的配置文件
#140数据库的配置文件

  • vi /etc/my.cnf

[mysqld]
log-bin=mysql-bin
server-id=140

4a7291d193b217a9be4aab783bcf1276.png


#141数据库的配置文件

  • vi /etc/my.cnf

[mysqld]
log-bin=mysql-bin
server-id=141
#142数据库的配置文件

  • vi /etc/my.cnf

[mysqld]
log-bin=mysql-bin
server-id=142
3、查看master状态

  • SHOW MASTER STATUS;

8fb6c8583b395bb67dc51adf81bcaab8.png


4、配置slave
#登陆在140,141据库,在slave上链接master

  • change master to master_host='172.8.10.140',master_user='siger',master_password='xxxxxx',master_log_file='mysql-bin.000004',master_log_pos=77461339;

#参数配置
master_host:主节点mysql的IP地址
master_user:主节点mysql登陆用户的用户名
master_password:主节点mysql登陆用户的密码
master_log_file:主节点mysql的日志文件指定
master_log_pos:主节点mysql的Ppsition的ID

4c0323af1d659ae347db59bcd79770a6.png


5、启动从服务
#在141数据库上

  • start slave;

#在142数据库上

  • start slave;

6、查看slave状态
#在3307数据库上

  • show slave statusG

36a52ab14cb1ed184963afb323755b9b.png


#在3308数据库上

  • show slave statusG

e9742c0c01f0ee0d72072dec09864000.png


7、主从测试
#在master建立数据库siger

  • create database siger;
  • use siger;
  • create table slave_test(id int(6),name varchar(10))
  • insert into slave_test values(000001,'weiyang');
  • FLUSH PRIVILEGES;
  • show tables;

af376adef797a72ae90e88c2c9c30a67.png


#在141、142从节点上查看

13baa3197468ca249a371c1af2931c49.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值