mysql 5.5.57互为主从_Mysql5互为主从及半同步复制

[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%";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值