MySQL安装及配置主从复制

我用的是两台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数据库出现

posted @ 2018-10-25 11:00  Christopher丶  阅读(202)  评论(0编辑  收藏  举报