一.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.rpm MySQL-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_master SONAME '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 TO MASTER_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 repl mysql-bin.000002 1448 ---masterDB 的 IP ---为主从同步需要的用户名及密码 ---在 master 上执行 show master status 的 log 文件名 ---需要同步的起点位置(在 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 TO MASTER_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 repl mysql-bin.000002 1448 ---masterDB 的 IP ---为主从同步需要的用户名及密码 ---在 master 上执行 show master status 的 log 文件名 ---需要同步的起点位置(在 master 上执行 show master status 得出该结果)
--转自