Back

mysql - 使用主从备份 master slave mysql cluster

发布时间: 2019-08-28 00:38:00

参考: https://www.cnblogs.com/baolong/p/5763472.html,
https://www.cnblogs.com/superfat/p/5267449.html

以下文件路径是ubuntu 18的。centos路径略有不同。

Master

1. 安装 mysql 

2. 修改配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

server-id   = 1 
log_bin     = /var/log/mysql/mysql-bin.log
log_bin_index     = /var/log/mysql/mysql-bin.index
expire_logs_days  = 10
max_binlog_size   = 100M
innodb_flush_log_at_trx_commit = 1 
sync_binlog = 1 
binlog_format = mixed
# binlog_do_db    = fruits              # 这里是要同步的数据库,建议不指定。因为我们应该有多个数据库需要同步
# binlog_ignore_db  = mysql         # 这里是要忽略的数据库

3. 重启master mysql

4. mysql> 控制台下,运行几个命令:

4.1  mysql> show master status;

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 | fruits       | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

4.2  mysql> reset master;       也可以通过该命令,来把mysql-bin.000x 的序号重置,成为000001

可以看到 4.1 给出的结果中, File :  mysql-bin.000001    Position: 154   ,  这个很重要。   同时说明 master节点已经在运行

5. 给slave分配用户和权限

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'your password';

Slave

修改配置文件

$ vim /etc/mysql/mysql.conf.d/mysqld.cnf

server-id   = 2 
relay_log   = /var/log/mysql/mysql-relay-bin.log
relay_log_index   = /var/log/mysql/mysql-relay-bin.index

注意: 这里配置这三个就可以了。其他的不要动。特别是不要有 log_bin等

然后,在mysql-cli中,运行下列SQL语句:

CHANGE MASTER TO MASTER_HOST='172.31.3.xxx', MASTER_PORT=3306, MASTER_USER='slave', MASTER_PASSWORD='slave password';

重启mysql

stop slave; 停止slave;

reset slave; 恢复slave 的同步信息到默认值(relay log pos 等值)

show slave status;    用普通形式呈现对应的数据

show slave status \G;    用列表的形式呈现对应的数据,推荐使用。

Slave_IO_Running   这两个是yes, 表示运行中。 no 表示停止。
Slave_SQL_Running

start slave;   启动slave 

注意点: 

1. 同步几乎是立刻的。目测小于 0.1 s  。 不像postgres那样几秒钟同步一次。

2. 如果在master方面没有指定 binlog_do_db, 那么slave会同步所有的database.  在master新建database后,slave方面也会增加

3. master 创建新table后,slave 会立刻同步.

Back