mysql - 使用主从备份 master slave mysql cluster
访问量: 1794
参考:
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 会立刻同步.