一、数据库的安装
详见https://www.jianshu.com/p/5073177eedf2
本文实验环境为阿里云的两台ubuntu18.04服务器:
master ip: 172.26.138.7
slave ip: 172.26.0.209
二、修改Master的配置(# 的行是我后增加的部分):
编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
server-id =1 # 必须保证集群中不同即可
log_bin =/var/log/mysql/mysql-bin.log #指定主备之间交换的日志文件,同时也是打开服务器master模式的开关
binlog_format =mixed #日志的格式,包括mixed,statement,mixed
binlog_do_db =test10 #共享的数据库名称
binlog_ignore_db = mysql #不共享的数据库名称
lc-messages-dir = /usr/share/mysql
skip-external-locking
#bind-address = 127.0.0.1 #此行保证master可以被集群访问
重启:systemctl restart mysql
三、进一步配置master
- 分配复制用的帐号:
mysql> create user repl;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.26.138.7' IDENTIFIED BY '123';
mysql> flush privileges;
- 查看master的状态,记录下相关信息,以供slave使用
mysql> show master status \G;
*************************** 1. row ***************************
File: mysql-bin.000003
Position: 2525
Binlog_Do_DB: test10
Binlog_Ignore_DB: mysql
Executed_Gtid_Set:
1 row in set (0.00 sec)
记录下: File: mysql-bin.000003和Position: 2525(可以理解为同步点)
到此:master配置完毕。
四、修改slave的配置(# 是我加入的行):
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
server-id = 2 #slave的server-id
log_bin = mysql-bin #应该可以省略
replicate_do_db =test10 #选择本地数据库(可以与master的Binlog_Do_DB不同,但必须在slave中已经建立好)
replicate_ignore_db =mysql #忽略的数据库
lc-messages-dir = /usr/share/mysql
skip-external-locking
重启:systemctl restart mysql
五、启用slave
在slave服务器上登录,并输入:
mysql> change master to master_host='172.26.138.7',master_port=3306,master_user='repl',master_password='123',master_log_file='mysql-bin.000003',master_log_pos=2525;
mysql> start slave
mysql> show slave status \G;
注: 当需要重新同步master时,可以首先stop slave
,然后重复以上步骤
六、测试:
此时,可以在master上执行各种写入操作,然后在slave在查看即可。
网友评论