博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql单机多实例
阅读量:5954 次
发布时间:2019-06-19

本文共 1875 字,大约阅读时间需要 6 分钟。

hot3.png

在数据库服务器上,可以架构多个Mysql服务器,进行单机多实例的读写分离;

可以通过mysqld_multi来进行多实例的管理,mysqld_multi是用perl写的脚本,原理是通过mysql_admin来进行多个数据库的操作;多实例的配置文件也有点不同,可以看作是多个mysql配置的集合;mysqld_multi命令使用如下:

mysqld_multi report/start/stop

可以使用 mysqld_multi --example来查看配置文件的例子;也可以直接复制下来当作自己的配置;注意备份以前的配置;

mv /etc/my.cnf /etc/my.cnf.bakmysqld_multi --example > /etc/my.cnf

按自己的需要修改配置文件,改成多个数据库;

[mysqld_multi]mysqld     = /usr/bin/mysqld_safemysqladmin = /usr/bin/mysqladminuser       = multi_adminpassword   = my_password[mysqld1]socket     = /tmp/mysql1.sockport       = 3306pid-file   = /data2/mysql1/mysql.piddatadir    = /data2/mysql1[mysqld2]socket     = /tmp/mysql2.sockport       = 3307pid-file   = /data2/mysql2/mysql.piddatadir    = /data2//mysql2

这里多出了一个[mysqld_multi]的配置项,需要在每个数据库里配置一个multi_admin来管理mysql

下面新建数据库:

mysql_install_db --user=mysql --datadir=/data2/mysql1mysql_install_db --user=mysql --datadir=/data2/mysql2

启动mysql服务器

mysqld_multi start 1,2

这个时候使用 mysqld_report来查看是否已启动是会失败的,因为还没有新建 multi_admin来查询状态;我们可以通过 netstat来查看端口

# netstat -tulnp | grep mysqltcp        0      0 :::3306                     :::*                        LISTEN      716784/mysqldtcp        0      0 :::3307                     :::*                        LISTEN      3669/mysqldtcp        0      0 :::3317                     :::*                        LISTEN      714503/mysqld

可以看到3306和3307端口已经监听;同时目录下生成了相应的.socket文件; 

下面我们可以连接mysql来配置multi_admin用户;由于有多个实例,连接需要使用socket连接

mysql -u root -S /tmp/mysql1.sockgrant shutdown on *.* to multi_admin@'localhost' identified by'my_password';flush privileges;quit

同样道理配置另一台3307;

也可以拷贝一份mysql来创建新的实例,这样里面的用户也会被拷贝。注意目录权限必须是mysql , chown -R mysql.mysql /data2/mysql2 

下面可以使用

mysqld_multi --defaults-file=/etc/my.cnf start 启动全部实例

如果启动出错的话,可以到对应目录下查看日志文件,看哪里出错了。

使用mysqld_multi需要手动启动数据库,也可以加入开机启动项: 

echo "mysqld_multi" >>  /etc/rc.local

 

 

转载于:https://my.oschina.net/ifeixiang/blog/369833

你可能感兴趣的文章
Javascript_备忘录5
查看>>
Can’t create handler inside thread that has not called Looper.prepare()
查看>>
敏捷开发方法综述
查看>>
Hadoop数据操作系统YARN全解析
查看>>
修改数据库的兼容级别
查看>>
Windows下同时安装两个版本Jdk
查看>>
uoj#228. 基础数据结构练习题(线段树)
查看>>
JS键盘事件监听
查看>>
ios开发周期之--(向上,向下,四舍五入)取整
查看>>
加油!
查看>>
拦截导弹问题(动态规划)
查看>>
iOS 单元测试(Unit Test 和 UI Test)
查看>>
[linux小技巧]
查看>>
文件下载_中文乱码:"Content-disposition","attachment; filename=中文名
查看>>
HBase 笔记3
查看>>
2017.11.23 display fun --STM8
查看>>
深入学习jQuery选择器系列第八篇——过滤选择器之伪子元素选择器
查看>>
一个关于log4j的悲伤的故事
查看>>
PCA
查看>>
ajax上传文件
查看>>