今天看视频学习了下mysql的多实例,感觉很杂,现在梳理下,多实例简单说就是在一台主机内运行多个逻辑上互不影响的MySQL,它们可以共用相同的物理资源,但是配置文件,数据库内容不同。
步骤:
1,安装mysql5.6
安装方式有很多,不在赘述,我采用的是编译安装,版本是mysql5.6.29。指定安装路径到了/usr/local/mysql中
make install完成后不用做其他操作,直接做第二步即可。
2,配置文件以及启动程序
思路
在根目录下新建data文件夹,建立两个数据库,分别以其端口号作为子文件夹名称
第一步
新建目录,并赋予mysql用户组权限
-p /data/ 330 { 6 , 7 }/data
chown -R mysql.mysql /data
我们为两个数据库分配端口为3306和3307.
因为我这是已经安装好的,所以多了很多文件,真正做完后每个文件夹内只有my.cnf,mysql,和data
完成后不要忘了chmod给予my.cnf,mysql执行权限
附配置文件详细内容
#配置文件my.cnf
my.cnf
[client]
port = 3306
socket = /data/ 3306 /mysql.sock
[mysql]
no-auto-rehash
socket = /data/ 3306 /mysql.sock
[mysqld]
socket = /data/ 3306 /mysql.sock
user = mysql
port = 3306
socket = /data/ 3306 /mysql.sock
basedir = /usr/local/mysql
datadir = /data/ 3306 /data
open_files_limit = 1024
back_log = 600
max_connections = 800
# 会话上限800
max_connect_errors = 3000
# 客户端密码错误允许最大次数
table_open_cache = 614
# 所有线程最大打开表的数量614
external-locking = FALSE
# 不允许外部文件级别的锁
max_allowed_packet = 8M
# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小
sort_buffer_size = 1M
#最小排序缓冲字节
join_buffer_size = 1M
#join连接(不太清楚这里意思)
thread_cache_size = 100
#保留多少线程缓存
thread_concurrency = 2
# 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量
query_cache_size = 2M
#查询缓存大小,如有下一次同样查询不在处理直接返回结果
query_cache_limit = 1M
# 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖
query_cache_min_res_unit = 2K
#default_table_type = InnoDB
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 2M
max_heap_table_size = 2M
slow_query_log = 1
slow_query_log_file = /data/ 3306 /slow.log
long_query_time = 2
#以上三个参数记录慢日志,查询时间超过2秒以上的
#log-error = /data/3306/error.log
pid- file = /data/ 3306 /mysql.pid
log- bin = /data/ 3306 /mysql- bin
relay-log = /data/ 3306 /relay- bin
relay-log-info- file = /data/ 3306 /relay-log.info
binlog_cache_size = 1M
max_binlog_cache_size = 1M
max_binlog_size = 2M
expire_logs_days = 7
key_buffer_size = 16M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M
myisam_sort_buffer_size = 1M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
lower_case_table_names = 1
skip-name-resolve
slave-skip-errors = 1032 , 1062
replicate-ignore-db = mysql
server- id = 1
innodb_additional_mem_pool_size = 4M
innodb_buffer_pool_size = 32M
innodb_data_file_path = ibdata1:128M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 2
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 4M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
[mysqldump]
quick
max_allowed_packet = 2M
[mysqld_safe]
log-error=/data/ 3306 /mysql_liyao3306.err
pid- file =/data/ 3306 /mysqld.pid
#mysql启动文件
mysql
#!/bin/bash
port= 3306
mysql_user= "root"
mysql_pwd= "123.com"
CmdPath= "/usr/local/mysql/bin"
mysql_sock= "/data/${port}/mysql.sock"
#start function
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
/ bin /sh ${CmdPath}/mysqld_safe --defaults- file =/data/${port}/my.cnf 2 >& 1 > /dev/null &
else
printf "MySQL is running...\n"
exit
fi
}
#stop function
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
fi
}
#restart function
function_restart_mysql()
{
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage:/data/${port}/mysql {start|stop|restart}\n"
;;
esac
第二步,初始化数据库
必须到mysql_install_db这个文件的文件夹中
初始化数据库
--basedir=/usr/local/mysql --datadir=/data/ 3306 /data --user=mysql
注意,datadir路径指向/data对应目录,初始化成功后即可在data目录中看到相应的文件
第三步,开启以及关闭
开启数据库命令
3306 /mysql start
此时无法使用stop关闭数据库,需要设立密码
重设密码命令
-u root -S /data/ 3306 /mysql.sock password '123.com'
设置完密码后,vi /data/3306/mysql 启动文件,将mysql_pwd改为你的密码,OK,可以使用了。
涉及安全问题,可以将data下的mysql文件全部改为700权限,用户改成root。
#更改权限
find /data - type f -name "mysql" - exec chmod 700 {} \;
#更改用户
find /data - type f -name "mysql" - exec chown root.root {} \;
3,问题
如果出现问题,建议从以下几点考虑。
1,权限问题,包括目录,文件
2,路径问题,根据实际情况修改配置文件,切莫直接搬运
3,如无法确,请查看日志文件,日志在/data/330?/下,根据日志查找错误。
以上三种已经包含了90%的问题
4,磁盘空间
5,安装不完整,缺少对应支持。
enjoy it