我用的是两台ubutnu18.04的虚拟机配置的,当然用一台机器安装两个mysql或者用docker也可以实现
安装mysql
ubuntu安装mysql很简单,只要使用下列命令就可以安装成功
sudo apt install mysql-server-5.7 mysql-client-5.7
然后启动mysql服务
sudo service mysql start
修改root密码
这时候你会发现安装的时候并没有要求输入root密码,没法登录mysql,不要急,其实账户名和密码已经写在配置文件中了
sudo cat /etc/mysql/debian.cnf
用这个账号密码登录
[client]
host = localhost
user = debian-sys-maint
password = jzEMr4DMToOA7VB6
socket = /var/run/mysqld/mysqld.sock
mysql -udebian-sys-maint -p
登录之后,更改root的密码和plugin
update set mysql.user authentication_string=PASSWORD('123456') where user='root';
update set mysql.user plugin='mysql_native_password' where user='root';
flush privileges;
quit;
下面就可以用root账户登录了
配置Master主服务器
选一个作为master主服务器,修改配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]下面增加下面几行代码
[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
保存并重启mysql服务
sudo service mysql restart
然后登录mysql,新建repl用户,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
create user repl;
grant replication slave on *.* to 'repl'@'%' identified by 'mysql';
接下来就可以使用查看binlog日志文件名称和位置了
show master status
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000003 | 313 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
配置slave从服务器
同样先修改/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下面增加下面几行代码
[mysqld]
server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
保存并重启mysql服务,登录mysql服务,连接master服务器
change master to master_host='master服务器ip', \
master_port=3306, \
master_user='repl', \
master_password='mysql', \
master_log_file='master-bin.000003', \
master_log_pos=313;
启动slave
start slave;
查看slave状态
show slave status;
这时会看到错误信息,不能连接master服务器
先停止slave
stop slave
需要修改/etc/mysql/mysql.conf.d/mysqld.cnf文件,把bind_address = 127.0.0.1注释掉(远程客户端链接不上mysql服务,除了mysql权限问题外,也有可能是这个原因造成的,redis配置文件也有这个配置),再启动slave,重新查看slave状态就没有报错信息了,配置完成之后,在master服务器创建一个数据库
create database test;
这时候再去查看slave服务器,也会有test数据库出现