为什么要使用多实例
1.物理机强劲,单个项目无法把资源使用完。
2.限制单个实例数据库大小,备份好做。
3.资源隔离,减少互相影响。
4.分担连接数。mysql随连接数上升,性能严重下降。
5.充分利用资源。不同业务错开高峰混跑。
mysql启动默认使用my.cnf文件顺序
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
/etc/my.cnf < /etc/mysql/my.cnf < /usr/local/mysql/etc/my.cnf < ~/.my.cnf
后面覆盖前面配置。
innodb_buffer_size 会自动调整为128的倍数
-----------------------------------------------------------------------------------------------
使用strace跟踪mysqld启动,能看到详细调用。
strace -o /tmp/11.log -ttt /usr/local/mysql/bin/mysqld
......
1529632226.754417 stat("/etc/my.cnf", {st_mode=S_IFREG|0644, st_size=9697, ...}) = 0
1529632226.754491 open("/etc/my.cnf", O_RDONLY) = 3
1529632226.754549 fstat(3, {st_mode=S_IFREG|0644, st_size=9697, ...}) = 0
1529632226.754593 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f249a169000
1529632226.754637 read(3, "[client]
port = 3306
"..., 4096) = 4096
1529632226.754745 read(3, "n_load_add ="..., 4096) = 4096
1529632226.754832 read(3, "fer_pool_dump_pct "..., 4096) = 1505
1529632226.754895 read(3, "", 4096) = 0
1529632226.754942 close(3) = 0
1529632226.754982 munmap(0x7f249a169000, 4096) = 0
1529632226.755035 stat("/etc/mysql/my.cnf", 0x7ffe5fac6710) = -1 ENOENT (No such file or directory)
1529632226.755088 stat("/usr/local/mysql/etc/my.cnf", 0x7ffe5fac6710) = -1 ENOENT (No such file or directory)
1529632226.755143 stat("/root/.my.cnf", 0x7ffe5fac6710) = -1 ENOENT (No such file or directory)
------------------------------------------------------------------------------------------------------------------------------
多实例安装
1.配置文件多份。
cp /etc/my.cnf /home/mysql/mysqldata
sed -i 's/3306/3309/g' ./my.cnf # socket文件记得改
2.初始化
/usr/local/mysql/bin/mysqld --defaults-file=/home/mysql/mysqldata/my.cnf --initialize
3.启动mysql
/usr/local/mysql/bin/mysqld --defaults-file=/home/mysql/mysqldata/my.cnf &
4.修改密码
mysql -S /tmp/mysql3309.sock -p
alter user user() identified by 'root123';
-------------------------------------------------------------------------------------------------------------
修改my.cnf 中,能比较好看点
[mysql]
prompt="\u@\h:\p [\d]>"
Option Description
c A counter that increments for each statement you issue
D The full current date
d The default database
h The server host
l The current delimiter (new in 5.1.12)
m Minutes of the current time
A newline character
O The current month in three-letter format (Jan, Feb, …)
o The current month in numeric format
P am/pm
p The current TCP/IP port or socket file
R The current time, in 24-hour military time (0–23)
The current time, standard 12-hour time (1–12)
S Semicolon
s Seconds of the current time
A tab characte
在操作系统上有些参数需要做优化的,拷贝别人的。
网给方面的配置, 要修改/etc/sysctl.conf文件
增加tcp支持的队列数
net.ipv4.tcp_max_syn_backlog = 65535
减少断开连接时 ,资源回收
net.ipv4.tcp_max_tw_buckets = 8000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
打开文件的限制
可以便用ulimit -a目录的刍各位限制,可以修改/etc/security/limits.conf文件 增加以下内容以修改打开文件数量的限制
*soft nofile 65535
*hard nofile 65535
除此之外最好在MySQL服务器上关闭iptables,selinux 等防火墙软件。