[Mysql5.5编译安装]] mysql5.5 Cmake编译参数 cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -
DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -
DMYSQL_DATADIR=/opt/mysql/data -DWITH_DEBUG=0
-DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -
DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1
CMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql DEFAULT_CHARSET:指定服务器默认字符集,默认latin1 DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF WITH_COMMENT:指定编译备注信息 WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。 WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎 SYSCONFDIR:初始化参数文件目录 MYSQL_DATADIR:数据文件目录 MYSQL_TCP_PORT:服务端口号,默认3306 MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock
make && make install
chown -R mysql:mysql /opt/mysql scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data 这里顺序很重要不然报错
cp support-files/my-medium.cnf /opt/mysql/my.cnf
cd /opt/mysql/support-files/ cp ./mysql.server /etc/init.d/mysql5 chmod 755 /etc/init.d/mysql5 chkconfig --levle 35 mysql5 on 在my.cnf的[mysqld]中添加 skip-name-resolve service mysql5 start
[Mysql主从] (主从分为标为AB) 1.修改A配置文件(my.cnf) skip-name-resolve skip-locking log-bin=mysql-bin 启动二进制日志记录 binlog-do-db=test 设置需要记录bin-log的库 binlog-ignore-db=mysql 设置不需要bin-log的库 replicate-do-db=test 设置允许复制同步的库 replicate-ignore-db=mysql 设置不允许同步复制的库 server-id = 1 服务器ID 从主不能相同 slave-skip-errors=all sync_binlog=0 2.启动A(启动前最好阻止外部连接到主库)并进入命令行 grant replication slave,file on *.* to 'repl'@'B地址' identified by 'pass'; 建立从库同步复制账号 flush privileges; 刷新使账号立即生效 flush tables with read lock; 全局读锁定 show master status; 记录bin-log文件名和log-post位移量 3.备份A mysqldump -uroot -p --quick --single-transaction --master-data=1 --default-character-set=utf8 dbname > databases.sql #innodb mysqldump -uroot -p --opt --default-character-set=utf8 dbname > databases.sql #myisam unlocak tables; 备份完后可以解除锁定 4.B导入 mysqldump -uroot -p dbname < databases.sql
5.修改B配置文件(my.cnf) skip-name-resolve skip-locking log-bin=mysql-bin 启动二进制日志记录 binlog-do-db=test 设置需要记录bin-log的库 binlog-ignore-db=mysql 设置不需要bin-log的库 replicate-do-db=test 设置允许复制同步的库 replicate-ignore-db=mysql 设置不允许同步复制的库 #log_slave_updates 从服务器写入relay-bin日志同时写到数据库的bin-log日志 server-id = 1 服务器ID 从主不能相同 slave-skip-errors=all sync_binlog=0
6.用--skip-slave-start选项启动从服务器 CHANGE MASTER TO MASTER_HOST='A地址',\ MASTER_USER='repl', MASTER_PASSWORD='slavepass', \ MASTER_LOG_FILE='bin-log-name', \ MASTER_LOG_POS=log_post,MASTER_CONNECT_RETRY=30; 7.slave start 启动B show slave status\G show processlist;
8.测试同步复制
[Mysql互为主从] 在主从基础上进行(主从分为标为AB) 1.修改A配置文件(my.cnf) log_slave_updates 服务器写入relay-bin日志同时写到数据库的bin-log日志
auto_increment_increment=2 #自增涨增量 auto_increment_offset=1 #初始起点值 2.修改B配置文件 auto_increment_increment=2 #自增涨增量 auto_increment_offset=1 #初始起点值 重启数据库
3.B(启动前最好阻止外部连接到B)并进入命令行 grant replication slave,file on *.* to 'rep2'@'A' identified by 'pass'; 建立同步复制账号 flush privileges; 刷新使账号立即生效 flush tables with read lock; 全局读锁定 show master status; 记录bin-log文件名和log-post位移量
4.用--skip-slave-start选项启动A服务器 service mysql5 stop mysqld_safe --user=mysql --skip-slave-start&
5.设置同步信息 CHANGE MASTER TO MASTER_HOST='B地址', MASTER_USER='repl', MASTER_PASSWORD='slavepass', MASTER_LOG_FILE='bin-log-name', MASTER_LOG_POS=log_post, MASTER_CONNECT_RETRY=30; 6.slave start 启动A show slave status\G show processlist;
[Mysql主从+半同步]
Master: INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; SET GLOBAL rpl_semi_sync_master_enabled=1; SET GLOBAL rpl_semi_sync_master_timeout=1000; (1s, default 10s) Slave: INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; SET GLOBAL rpl_semi_sync_slave_enabled=1; 复制心跳(用户检测复制是否中断)
1.在主从基础上进行修改配置文件(A为主 B为从) A: rpl_semi_sync_master_enabled=1 rpl_semi_sync_master_timeout=1000 B: rpl_semi_sync_slave_enabled=1
2.或者 A: INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; 插件默认不安装,安装后下次启动自动加载 SET GLOBAL rpl_semi_sync_master_enabled=1; SET GLOBAL rpl_semi_sync_master_timeout=1000;
B: INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; SET GLOBAL rpl_semi_sync_slave_enabled=1; STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
3.查看主从服务器状态 show status like "%rpl_semi%";
+--------------------------------------------+---------------+ | Variable_name | Value | +--------------------------------------------+---------------+ | Rpl_semi_sync_master_clients | 1 |# 有多少个Semi-sync的备库 | Rpl_semi_sync_master_net_avg_wait_time | 732 |# 事务提交后,等待备库响应的平均时间 | Rpl_semi_sync_master_net_wait_time | 1042785285 |# 等待网络响应的总次数 | Rpl_semi_sync_master_net_waits | 1423323 |# 总的网络等待时间 | Rpl_semi_sync_master_no_times | 0 |# 一共有几次从Semi-sync跌回普通状态 | Rpl_semi_sync_master_no_tx | 0 |# 备库未及时响应的事务数 | Rpl_semi_sync_master_status | ON |# 主库上Semi-sync是否正常开启 | Rpl_semi_sync_master_timefunc_failures | 0 |# 时间函数未正常工作的次数 | Rpl_semi_sync_master_tx_avg_wait_time | 29059 |# 开启Semi-sync,事务返回需要等待的平均时间 | Rpl_semi_sync_master_tx_wait_time | 8164966680929 |# 事务等待备库响应的总时间 | Rpl_semi_sync_master_tx_waits | 280974820 |# 事务等待备库响应的总次数 | Rpl_semi_sync_master_wait_pos_backtraverse | 5499398 |# 改变当前等待最小二进制日志的次数 | Rpl_semi_sync_master_wait_sessions | 230 |# 当前有几个线程在等备库响应 | Rpl_semi_sync_master_yes_tx | 16801244 |# Semi-sync模式下,成功的事务数 +--------------------------------------------+---------------+
[Mysql互为主从+半同步]
1.在互为主从基础上进行修改配置文件(A为主 B为从) A: rpl_semi_sync_master_enabled=1 rpl_semi_sync_slave_enabled=1 rpl_semi_sync_master_timeout=1000 B: rpl_semi_sync_slave_enabled=1 rpl_semi_sync_master_enabled=1 rpl_semi_sync_master_timeout=1000
2.或者 A: INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; SET GLOBAL rpl_semi_sync_master_enabled=1; SET GLOBAL rpl_semi_sync_slave_enabled=1; SET GLOBAL rpl_semi_sync_master_timeout=1000; STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
B: INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; SET GLOBAL rpl_semi_sync_master_enabled=1; SET GLOBAL rpl_semi_sync_slave_enabled=1; SET GLOBAL rpl_semi_sync_master_timeout=1000; STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
3.查看主从服务器状态 show status like "%rpl_semi%"; |