Centos中Mysql创建多个数据库实例并相互转换
下一篇: 忘记了Mysql下root密码,如何重置新密码?
本文章将会演示如何在已有Mysql数据库基础上创建第二个Mysql实例,并将原数据库转移到第二个创建的数据库实例中。
描述
有时候,几个不同的数据库在同一个Mysql数据库实例中会出现问题。出现问题的场景可能是这样的:
两个个项目使用的是同一个数据库。因为某些原因,一个项目需要重新启动它的数据库。在这种情况下,这两个数据库都会受到影响。
如果其中一个项目是多线程的,一不小心就可能创造出太多的MySQL连接,超过了Mysql最大的连接数。在这种情况下,使用同一实例的其他项目将受到影响。分离数据库实例可以帮助避免这种奇怪的情况。
步骤
创建第二个Mysql实例
步骤1
创建一个新的Mysql安装目录
mkdir -p /var/lib/mysqlSecondInstance
步骤2
使用下列命令设置权限:
chmod --reference /var/lib/mysql /var/lib/mysqlSecondInstance chown --reference /var/lib/mysql /var/lib/mysqlSecondInstance
在这里,"–reference"表明了原有数据库实例的权限。上面/var/lib/mysql是你之前安装第一个数据库实例的目录。
步骤3
在/etc/目录下复制现有配置文件my.cnf,并在/etc目录下重命名。
/etc/my.cnf文件包含了mysql数据库的配置属性。所以,为了创建第二个mysql数据库实例,我们必须在同一个目录下创建第二个配置文件。
cp -p /etc/my.cnf /etc/mySecondInstance.cnf
步骤4
编辑新复制过来的的配置文件mySecondInstance.cnf,我使用vim命令进行编辑:
vim /etc/mySecondInstance.cnf
并将配置文件修改成如下:
[mysqld] datadir=/var/lib/mysqlSecondInstance socket=/var/lib/mysql/mysqlSecondInstance.sock port=3307 [mysqld_safe] log-error=/var/log/mysqlSecondInstance.log pid-file=/var/run/mysqld/mysqlSecondInstance.pid
步骤5
现在,我们必须安装Mysql到最新的目录下,并使用新的端口监听,比如用3307端口。
mysql_install_db --user=mysql --datadir=/var/lib/mysqlSecondInstance
上面的mysql_install_db在你原先Mysql安装目录下的scripts目录下,比如我的mysql_install_db所在目录:
/var/lib/mysql/scripts/mysql_install_db。你根据你第一个Mysql安装路径找到相应的安装命令。
上面的命令运行成功后我们就创建了第二个Mysql实例。现在,我们学习下如何启动和关闭这个实例。
开启和关闭Mysql第二个实例
开启:
mysqld_safe --defaults-file=/etc/mySecondInstance.cnf &
验证下3307端口是否监听这个实例
netstat -tanp | grep 3307
连接到新创建的Mysql实例
mysql -u root --port=3307 -h 127.0.0.1 -p
在这里,root为数据库用户名,127.0.0.1为主机地址。你可以根据你自己的地址进行更改。
使用该命令后,它会要求密码。此时密码为空,直接回车键即可,因为我们还没有设置任何密码。
进入后,我们会得到"mysql>"提示,你可以在这里设置用户密码。
关闭Mysql实例
mysqladmin -S /var/lib/mysql/mysqlSecondInstance.sock shutdown -p
如果有必要频繁的开始/停止这个实例,我们可以创建一个小脚本:
vim mySecondInstance
将下面的脚本复制到mySecondInstance文件中:
#!/bin/bash start(){ mysqld_safe --defaults-file=/etc/mySecondInstance .cnf & } stop(){ mysqladmin -S /var/lib/mysql/mySecondInstance .sock shutdown -p } case "$1" in start) start ;; stop) stop ;; esac
使脚本文件可以被执行,使用如下命令:
chmod 755 mySecondInstance
现在,我们可以如下这样启动和停止第二MySQL实例:
service mySecondInstance start service mySecondInstance stop
当它要求输入用户密码时,你提供该数据库实例密码即可。
将数据库从第一个实例转移到第二个实例中
假设,在第一个Mysql数据库实例中,包含了如下的数据库:
mysql> show databases; +-----------------------+ | Database | +-----------------------+ | DatabaseOne | | DatabaseTwo | +-----------------------+
如果你想复制"DatabaseOne"数据库到新的第二个Mysql数据库实例中,那么可以这样:
步骤1
先导出数据库
mysqldump -u root -p DatabaseOne > databaseOne.sql
步骤2
进入第二个mysql实例并创建一个数据库,然后导入sql:
mysql -u root --port=3307 -h 127.0.0.1 -p mysql > create database DatabaseOne mysql > exit;
步骤3
从外部导入数据库第二个实例中
mysql -u root --port=3307 -h 127.0.0.1 -p DatabaseOne < databaseOne.sql
总结
这样,我们可以成功地创建MySQL数据库实例并对两者数据库进行转换。我们可以遵循相同的方法来创建多个数据库实例。
英文原文:http://www.codeproject.com/Tips/1063881/MySQL-Double-Instance-Creation-and-Database-Transf
译文地址:http://coderschool.cn/1296.html
转载请注明英文和译文地址
下一篇: 忘记了Mysql下root密码,如何重置新密码?
3 Comments
这个可以有!
支持一下站长,欢迎大家找我交流技术!
马下,学习了!专业,赞一个!