云网牛站
所在位置:首页 > Linux云数据库 > Ubuntu 18.04下MySQL主从布署

Ubuntu 18.04下MySQL主从布署

2018-05-08 16:19:56作者:kut稿源:开源中国

作为一个架构师,连MySQL主从布署、读写分离都不懂是说不过去的。

在写这篇文章之前,我的确是没做过这方面的东西。一直都在做系统分析及实现,所以有数据库直连即可,一直以为到部署之后运营一段时间再作调整。

其实并不是这样,往往底层的设计决定实现的方式。就这个MySQL主从吧,也有着读写分离的意味,写一个数据库,读可以是多个数据库。所以上层使用JPA、Hibernate这类的ORM框架就无法很好的工作——因为它个都认为读写是同一个数据库。

所以,有时还是要从下往上看,这是架构师的基本能力。

 

一、准备

1.准备虚拟主机

安装两台虚拟主机,IP信息如下:

192.168.122.20 mysql-primary # 主库

192.168.122.21 mysql-secondary # 从库

2.安装MySQL

我是在Ubuntu 18.04 server上安装MySQL的,奇怪的是从Ubuntu 18.04开始,MySQL的安装有所不同,所以这里就说明一下:

# 安装

$ sudo apt install mysql-server

# 初始配置服务器

$ sudo mysql_secure_installation

# 登录服务器测试一下 - 注意,必须是sudo,否则就算输入的密码是正确的也连不上去。

$ sudo mysql -u root -p

3.配置/etc/hosts

这里配置这个主要是方便认知,如果用IP进行配置的话,一串串数字真的很容易出错,于是就编辑/etc/hosts,以方便认知服务器:

192.168.122.20 mysql-primary

192.168.122.21 mysql-secondary

 

二、配置主服务器

1.先登上MySQL服务器

$ sudo mysql -u root -p

2.准备用户

# 添加用户同步的用户,并赋予访问所有功能的权限

mysql> CREATE USER repl;

mysql> GRANT ALL ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_password';

# 为root用户添加远程访问数据库的能力,方便测试数据(这一步并不是必须的)

mysql> GRANT ALL ON *.* TO 'root'@'%';

3.配置服务器

编辑mysql配置文件,在Ubuntu中,文件路径为:/etc/mysql/mysql.conf.d/mysqld.cnf:

# 在[mysqld]下面增加下面代码

# 数据主唯一标识,一般为本机IP最后一个数字,这里是20

server-id=20

# 开启binlog

log-bin=master-bin

log-bin-index=master-bin.index

# 找到 bind-address = 127.0.0.1,将其改成以下代码,使服务器可以接受远程访问:

bind-address = 0.0.0.0

4.测试服务器配置

重启服务器:

$ sudo service mysql restart

登录服务器:

$ mysql -u root -h mysql-primary -p

$ mysql -u repl -h mysql-primary -p

查看binlog是否已工作:

mysql> SHOW MASTER STATUS;

# 一般情况下会出现下面的输出:

Ubuntu 18.04下MySQL主从布署

 

三、配置从服务器

1.先登上MySQL服务器

$ sudo mysql -u root -p

2.准备用户

# 为root用户添加远程访问数据库的能力,方便测试数据(这一步并不是必须的)

mysql> GRANT ALL ON *.* TO 'root'@'%';

3.配置服务器

编辑mysql配置文件,在Ubuntu中,文件路径为:/etc/mysql/mysql.conf.d/mysqld.cnf:

# 在[mysqld]下面增加下面代码

# 数据主唯一标识,一般为本机IP最后一个数字,这里是21

server-id=21

# 找到 bind-address = 127.0.0.1,将其改成以下代码,使服务器可以接受远程访问:

bind-address = 0.0.0.0

重启服务器

$ sudo service mysql restart

连上MySQL,配置从服务器并启用:

Ubuntu 18.04下MySQL主从布署

master_log_file 是主服务器上执行SHOW MASTER STATUS获取的主MySQL的binlog信息。

查看slave是否已工作:

mysql> SHOW SLAVE STATUS\G;

# 输出类似以下情形:

Ubuntu 18.04下MySQL主从布署

 

四、测试

配置好了,那就测试一下:

1.主服务器添加数据库,查看从服务器是否也添加了。

2.主服务器添加数据表,并添加数据,查看从服务器是否已同步。

3.主服务器删除库或者表,查看从服务器的情况是否也同样同步。

 

五、结语

这里配置好了主从,进一步做高可用。请参考KeepAlived高可用

 

相关主题

Debian服务器设置MariaDB数据库主从复制(Master-Slave)

精选文章
热门文章