mysql5.5.6配置手册
一.mysql5.5.6安装
1.卸载原有的mysql
#rpm -qa|grep -i mysql
#rpm -ev MySQL-client-5.5.6_rc-1.linux2.6
#rpm -ev MySQL-server-5.5.6_rc-1.linux2.6
卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除
#rm -f /etc/my.cnf
#rm -rf /var/lib/mysql
2.安装mysql5.5.6
#rpm -ivh MySQL-server-5.5.6_rc-1.linux2.6.i386.rpmMySQL-client-5.5.6_rc-1.linux2.6.i386.rpm
#/usr/bin/mysqladmin -u root password 'founder'
#/usr/bin/mysqladmin -u root -h localhost.localdomain password 'founder'
#mysql -uroot -pfounder
mysql>use mysql;
mysql>grant all on *.* to root@'%'identified by "founder";
mysql>FLUSH PRIVILEGES;
mysql>exit;
#cp /usr/share/mysql/my-small.cnf /etc/my.cnf
二.配置半同步模式的主从配置
1.半同步的配置:master>INSTALL PLUGIN rpl_semi_sync_masterSONAME 'semisync_master.so';
master>SET GLOBAL rpl_semi_sync_master_enabled=1;
master>SET GLOBAL rpl_semi_sync_master_timeout=10;
slave-x>INSTALL PLUGIN rpl_semi_sync_slave SONAME'semisync_slave.so';
slave-x>SET GLOBAL rpl_semi_sync_slave_enabled=1;
On the master:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10
On each slave:
[mysqld]
rpl_semi_sync_slave_enabled=1
2.配置主从模式
(1).在maste主机上,配置my.cnf
在[mysqld]配置段添加如下字段中增加
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10
server-id=1
log-bin=mysql-bin.log
binlog-do-db=shop1
重启mysql
#service mysqld restart
进入mysql中
#mysql -u root -ppassword
增加同步帐号
mysql>grant replication slave on *.* to 'repl'@'%'identified by 'repl';
mysql>FLUSH PRIVILEGES;
mysql>use mysql;
mysql>flush tables with read lock;
mysql>show master status;
mysql>unlock tables;
(2).配置slave数据库
首先创建数据库
#mysql -uroot -ppassword
mysql>create database databasename #建一个与主服务器 的数据库名字相同的数据库
mysql>exit;
(3).在从数据库的[mysqld]配置段添加如下字段中增加
#172.29.129.183
rpl_semi_sync_slave_enabled=1
server-id=2
#master-host=172.29.165.75
#master-user=repl
#master-password=repl
#master-connect-retry=60
replicate-do-db=shop1
(4).重启数据库
#/etc/init.d/mysql restart
(5).分别进入数据库中
在salve2上
#mysql -uroot -pfounder
mysql>slave stop;
mysql>CHANGE MASTER TOMASTER_HOST='172.29.165.75',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1448;
MYSQL>START SLAVE;
【注意】
172.29.165.75 ---masterDB的IP
repl ---为主从同步需要的用户名及密码
mysql-bin.000002 ---在master上执行show master status的log文件名
1448 ---需要同步的起点位置(在master上执行show master status得出该结果)
3.将主从复制的默认模式SBR改为RBR(行级模式)
在主机器上的[mysqld]节点加入
expire_logs_days=1 ---一天后删除旧的日志文件
#binlog_format="STATEMENT"
binlog_format="ROW"
#binlog_format="MIXED"
三.mysql参数调整innodb_buffer_pool_size:占总内存的70%~80%
innodb_log_file_size:一般为64-512M,即名为ib_logfile*文件的大小
innodb_log_buffer_size:一般为8-16M
innodb_flush_log_at_trx_commit:一般为1
innodb_log_files_in_group:ib_logfile*的个数
innodb_file_per_table:使每个Innodb的表,有自已独立的表空间
innodb_open_files:默认为300,若打开的表特别多可以增加该值
back_log:默认为50,当有大量连接时,需要设定该值,此值为等待侦听的队列大小
max_connections:mysql最大连接数
table_cache:通过show status查看open_tables数,使table_cache值和open_tables保持一致
thread_cache:至少为16
query_cache_size:(average query size = (query_cache_size -qcache_free_memory)/qcache_queries_in_cache) show status like 'qcache%';可查出相关数据
命中率计算公式:Qcache_hits / (Qcache_inserts + Qcache_hits ) *100%
/*=======================
写入my.cnf配置文件中的内容
========================*/
innodb_buffer_pool_size=2510M
innodb_log_file_size=512M
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_files_in_group=3
innodb_file_per_table=1
innodb_open_files=800
back_log=50
max_connections=1024
table_cache=2048
thread_cache=16
query_cache_size=32M
四.重设/清除master二进制日志文件
1.手动清除日志文件
--删除mysql-bin.000005之前的日志
mysql>PURGE MASTER LOGS TO 'mysql-bin.000005';
--删除1天前的日志
mysql>PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY);
2.重设master的日志文件mysql>reset master;
注意:重设master日志文件后,slave的主从需要重新启动,如下所示:
mysql>slave stop;
mysql>CHANGE MASTER TOMASTER_HOST='172.29.165.75',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1448;
mysql>slave start;
【注意】
172.29.165.75 ---masterDB的IP
repl ---为主从同步需要的用户名及密码
mysql-bin.000002 ---在master上执行show master status的log文件名
1448 ---需要同步的起点位置(在master上执行show master status得出该结果)
这个参数的配置涉及trax提交写trax log文件的行为
innodb_flush_log_at_trx_commit = 0
# 每秒写一次trax log,并执行fsync
innodb_flush_log_at_trx_commit = 1
# 每次trax 提交的时候写一次trax log, 并执行fsync
innodb_flush_log_at_trx_commit = 2
# 每次trax 提交的时候写一次trax log, 不会执行fsync