likes
comments
collection
share

Linux下mysql双主热备部署

作者站长头像
站长
· 阅读数 11

mysql双主热备部署

一、准备环境

1.1、服务器资源

服务名称:Linux主服务器1

IP:[请查看资源分配文档]

操作系统:CentOS 6.9 x64

服务名称:Linux从服务器2

IP:[请查看资源分配文档]

操作系统:CentOS 6.9 x64

1.2、检测系统是否已经安装过mysql或其依赖

# yum list installed | grep mysql

Linux下mysql双主热备部署

若像上图已装过要先将其删除,否则第4步使用yum安装时会报错

# yum -y remove mysql-libs.x86_64

二、安装mysql

2.1、mysql下载

下载地址:dev.mysql.com/downloads/m…

Linux下mysql双主热备部署  

2.2、将压缩包放到 tools目录下并解压

mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz上传到/opt/tools目录下,解压到/opt/app目录下

# cd /opt/tools

tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /opt/app/

解压文件,结果出现

File size limit exceeded (core dumped)

使用命令 ulimit -f unlimited

# cd /opt/app/

目录改名

# mv mysql-5.7.32-linux-glibc2.12-x86_64 mysql-5.7.32

2.3、建立用户组和用户

# groupadd -g 501 mysql

# useradd -u 501 -g mysql -c mysqldb -r -s /bin/false mysql

在这里,有必要说明一下-r -s /bin/false,其实这个是mysql官方建议的,它建议msyql用户只作为文件或者目录的拥有者,而不具有登录shell的权限,-r指明是系统用户,-s /bin/false指明mysql用户不 具有登录shell的权限。当然,你也可以让mysql作为普通用户存在,具有登录shell的权限。

# useradd -u 501 -g mysql -c mysqldb mysql

注意:如果已经存在具有给定GID的组,则会出现以下错误:

groupadd: GID '501' already exists

与-o(--non-unique)选项一起使用时,groupadd命令允许你创建具有非唯一GID的组

2.4、设置权限

在这里也做一个说明,所有涉及到mysql的文件都将其所有者和所属组设置为mysql

# chown -R mysql:mysql mysql-5.7.32

Linux下mysql双主热备部署

2.5、安装mysql

# cd /opt/app/mysql-5.7.32/

# ./bin/mysqld --user=mysql --basedir=/opt/app/mysql-5.7.32/ --datadir=/opt/app/mysql-5.7.32/data --initialize

如果出现安装错误信息:

./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方法:

# yum install -y libaio

如果出现安装错误信息:

./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

解决方法:

# yum -y install numactl

如果出现安装错误信息:

Errcode: 13 - Permission denied

解决方法:

直接定位到权限问题,但一直纠结于mysql文件夹内权限,没想到去上层目录查看,后经过排查发现是最上层的/opt权限就不对,可能是服务器迁移后这个出现了问题,把权限重新给了root755后,重新安装。

安装完成后再次执行mysql命令安装:

# ./bin/mysqld --user=mysql --basedir=/opt/app/mysql-5.7.32/ --datadir=/opt/app/mysql-5.7.32/data --initialize

安装如果成功,在这里,一定要注意最后生成的初始密码,一定要复制留着备用,mysql在第一次登录的时候,需要用这个初始密码,如下图红色框框处:

Linux下mysql双主热备部署 创建/etc/my.cnf

# vi /etc/my.cnf

添加以下内容:

[mysqld]

basedir=/opt/app/mysql-5.7.32

datadir=/opt/app/mysql-5.7.32/data

socket=/tmp/mysql.sock

character_set_server=utf8

user=mysql

port = 3306

lower_case_table_names=1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

 

#配置导入sql文件最大300M

max_allowed_packet=300M

wait_timeout=200000

interactive_timeout = 200000

 

[mysqld_safe]

log-error=/opt/app/mysql-5.7.32/data/mysqld.log

pid-file=/opt/app/mysql-5.7.32/data/mysql.pid

tmpdir=/tmp

授权文件:

# chown -R mysql:mysql /etc/my.cnf

2.6、启动服务

# ./support-files/mysql.server start

服务启动无误如图:

Linux下mysql双主热备部署

2.7、把mysql放到本地系统服务中

# cp support-files/mysql.server /etc/init.d/mysqld

# chown -R mysql:mysql /etc/init.d/mysqld

重新用系统命令启动下mysql,看看系统命令是否生效:

# service mysqld restart

Linux下mysql双主热备部署

2.8、将msyql设置系统命令

# vi ~/.bash_profile

在文件末尾添加以下内容:

export PATH=$PATH:/opt/app/mysql-5.7.32/bin

使修改马上生效:

# source ~/.bash_profile

三、登录mysql

3.1、登录mysql数据库

输入刚才的初始密码

# mysql -uroot -p

  Linux下mysql双主热备部署

3.2、为root用户设置新密码

mysql> alter user 'root'@'localhost' identified by "mysql12qw!@P@ssw0rd";

其中mysql12qw!@P@ssw0rd是新密码

Linux下mysql双主热备部署

3.3、修改root用户为在任何客户端都可以登录

mysql> use mysql;

mysql> grant all on *.* to root@'%' identified by 'mysql12qw!@P@ssw0rd' with grant option;

mysql> flush privileges;

3.4. 删除匿名账户

select * from mysql.user where user='';

delete from mysql.user where user='' and host='<hostname>';

commit;

3.5. 修改数据库管理员root的名称

use mysql;

update mysql.user set user="mysqlUser" where user="root";

commit;

3.6. 不能存在有通配符%作为主机信息

update mysql.user set host='xxx.xx.xxx.%' where host='%';  

这里xxx.xx.xxx需要替换为ip的前缀

3.7. 重启mysql

service mysqld restart

四、配置防火墙

启动3306端口

# vi /etc/sysconfig/iptables

添加以下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

重启防火墙

# service iptables restart

五、客户端连接mysql

5.1、windows连接

使用客户端Navicat Premium工具连接mysql,如图:

Linux下mysql双主热备部署

六、从服务器安装mysql

略,与主服务器的安装步骤相同

七、mysql设置双主热备

7.1、主服务器配置

7.1.1、登录mysql数据库

# mysql -u mysqlUser -p

输入数据库密码

Linux下mysql双主热备部署

7.1.2、主库建立同步专用账户slave

在生产中心mysql数据库中建立一个同步专用账户slave

mysql> grant replication slave,reload,super on *.* to 'slave'@'ip' identified by 'mysql12qw!@P@ssw0rd';

其中ip代表从服务器的ip地址,xxx代表密码

mysql> flush privileges;

Linux下mysql双主热备部署

注释:ip为从服务器的IP,slave为账户 ,mysql12qw!@P@ssw0rd为密码

7.1.3、服务器配置进行修改

# vi /etc/my.cnf

在[mysqld]下面添加如下内容:

server-id=1

log-bin=backuplog

sync_binlog=1

binlog_format=row

auto_increment_increment = 2

auto_increment_offset = 1

max_binlog_size=512m

expire_logs_days=1

binlog_do_db=dzjk_os

binlog_ignore_db=mysql,information_schema,performance_schema,sys

replicate_do_db=dzjk_os

slave_skip_errors=all

其中: server-id:为主服务器的ID值

log-bin:二进制变更日值

7.1.4、重启mysql服务

# service mysqld restart

(从现在起,它将把客户端有关数据库的修改记载到二进制变更日志里去)

7.1.5、主库启动同步到从库

登录mysql

# mysql -u mysqlUser -p

输入数据库密码

# mysql> stop slave;

# mysql> change master to master_host='ip',master_user='slave',master_password='mysql12qw!@P@ssw0rd';

注释:ip为从服务器的IP,slave为账户 ,mysql12qw!@P@ssw0rd为密码

# mysql> start slave;

查看设置是否正确命令:

# mysql>show slave status\G;

主要是看以下两项是否为YES:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Linux下mysql双主热备部署

7.2、从服务器配置

7.2.1、登录mysql数据库

# mysql -u mysqlUser -p

输入数据库密码

Linux下mysql双主热备部署

7.2.2、从库建立同步专用账户slave

在生产中心mysql数据库中建立一个同步专用账户slave

mysql> grant replication slave,reload,super on *.* to 'slave'@'ip' identified by 'mysql12qw!@P@ssw0rd';

其中ip代表主服务器的ip地址,mysql12qw!@P@ssw0rd代表密码

mysql> flush privileges;

Linux下mysql双主热备部署

注释:ip为主服务器的IP,slave为账户 ,mysql12qw!@P@ssw0rd为密码

7.2.3、服务器配置进行修改

# vi /etc/my.cnf

在[mysqld]下面添加如下内容:

server-id=2

log-bin=backuplog

sync_binlog=1

binlog_format=row

auto_increment_increment = 2

auto_increment_offset = 1

max_binlog_size=512m

expire_logs_days=1

binlog_do_db=dzjk_os

binlog_ignore_db=mysql,information_schema,performance_schema,sys

replicate_do_db=dzjk_os

slave_skip_errors=all

其中: server-id:为从服务器的ID值

log-bin:二进制变更日值

7.2.4、重启mysql服务

# service mysqld restart

(从现在起,它将把客户端有关数据库的修改记载到二进制变更日志里去)

7.2.5、主库启动同步到从库

登录mysql

# mysql -u mysqlUser -p

输入数据库密码

# mysql> stop slave;

# mysql> change master to master_host='ip',master_user='slave',master_password='mysql12qw!@P@ssw0rd';

注释:ip为主服务器的IP,slave为账户 ,mysql12qw!@P@ssw0rd为密码

# mysql> start slave;

查看设置是否正确命令:

# mysql>show slave status\G;

主要是看以下两项是否为YES:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Linux下mysql双主热备部署

最终的结果是:

主mysql服务器创建一个test数据库,从mysql服务器,也能看到test数据库,也是一样。

好了,以上就是Linux下mysql双主热备部署的全过程了,就是这样了!!!^_^

今天就先到这里了,溜了溜了溜了!!!^_^

觉得有收获的,帮忙点个赞呗!!!

Linux下mysql双主热备部署

转载自:https://juejin.cn/post/7091267277613596686
评论
请登录