阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux环境下MySQL数据库主从同步配置

423次阅读
没有评论

共计 8583 个字符,预计需要花费 22 分钟才能阅读完成。

操作系统:CentOS 6.x 64 位

MySQL数据库版本:mysql-5.5.35

MySQL主服务器:192.168.21.128

MySQL从服务器:192.168.21.129

准备篇:

说明:在两台 MySQL 服务器 192.168.21.128 和 192.168.21.129 上分别进行如下操作

备注:

作为主从服务器的 MySQL 版本建议使用同一版本!

或者必须保证主服务器的 MySQL 版本要高于从服务器的 MySQL 版本!

一、配置好 IP、DNS、网关,确保使用远程连接工具能够连接服务器

二、配置防火墙,开启 3306 端口

vi /etc/sysconfig/iptables  #编辑

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT  #允许 3306 端口

特别提示:如果这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的 22 端口这条规则的下面,添加好之后防火墙规则如下所示:

#########################################################

# Firewall configuration written by system-config-securitylevel

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT – [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p 50 -j ACCEPT

-A RH-Firewall-1-INPUT -p 51 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited

COMMIT

#########################################################

/etc/init.d/iptables restart #最后重启防火墙使配置生效

三、关闭 SELINUX

vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq  #保存退出

setenforce 0 #立即生效

四、系统约定

软件源代码包存放位置:/usr/local/src

源码包编译安装位置:/usr/local/ 软件名字

五、下载软件包

1、下载 MySQL

http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.35.tar.gz

2、下载 cmake(MySQL 编译工具)

http://wwwNaNake.org/files/v2.8/cmake-2.8.12.1.tar.gz

以上软件包上传到 /usr/local/src 目录

六、安装编译工具及库文件(使用 CentOS yum 命令安装)

yum install -y make apr* autoconf automake curl curl-devel gcc gcc-c++ gtk+-devel zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat*  cpp glibc libgomp libstdc++-devel keyutils-libs-devel libsepol-devel libselinux-devel krb5-devel  libXpm* freetype freetype-devel freetype* fontconfig fontconfig-devel  libjpeg* libpng* php-common php-gd gettext gettext-devel ncurses* libtool* libxml2 libxml2-devel patch policycoreutils bison

安装篇

说明:在两台 MySQL 服务器 192.168.21.128 和 192.168.21.129 上分别进行如下操作,安装 mysql-5.5.35

以下是远程登录到服务器,在命令行下面操作的

一、安装 cmake

cd /usr/local/src

tar zxvf cmake-2.8.12.1.tar.gz

cd cmake-2.8.12.1

./configure

make #编译

make install #安装

二、安装 mysql

groupadd mysql  #添加 mysql 组

useradd -g mysql mysql -s /bin/false  #创建用户 mysql 并加入到 mysql 组,不允许 mysql 用户直接登录系统

mkdir -p /data/mysql  #创建 MySQL 数据库存放目录

chown -R mysql:mysql /data/mysql   #设置 MySQL 数据库目录权限

mkdir -p /usr/local/mysql-5.5.35 #创建 MySQL 安装目录

ln -s /usr/local/mysql-5.5.35 /usr/local/mysql  #创建软连接到 mysql 目录,方便后面的配置

cd /usr/local/src

tar zxvf mysql-5.5.35.tar.gz  #解压

cd mysql-5.5.35

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/data/mysql  -DSYSCONFDIR=/etc   #配置

make #编译

make install  #安装

cd /usr/local/mysql

cp ./support-files/my-huge.cnf  /etc/my.cnf   #拷贝配置文件(注意:如果 /etc 目录下面默认有一个 my.cnf,直接覆盖即可)

vi /etc/my.cnf   #编辑配置文件, 在  [mysqld]  部分增加

datadir = /data/mysql  #添加 MySQL 数据库路径

./scripts/mysql_install_db –user=mysql  #生成 mysql 系统数据库

cp ./support-files/mysql.server  /etc/rc.d/init.d/mysqld  #把 Mysql 加入系统启动

chmod 755 /etc/init.d/mysqld   #增加执行权限

chkconfig mysqld on  #加入开机启动

vi /etc/rc.d/init.d/mysqld  #编辑

basedir = /usr/local/mysql   #MySQL程序安装路径

datadir = /data/mysql  #MySQl数据库存放目录

service mysqld start  #启动

vi /etc/profile   #把 mysql 服务加入系统环境变量:在最后添加下面这一行

export PATH=$PATH:/usr/local/mysql/bin

source  /etc/profile #使配置立即生效

下面这两行把 myslq 的库文件链接到系统默认的位置,这样你在编译类似 PHP 等软件时可以不用指定 mysql 的库文件地址。

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

mkdir /var/lib/mysql  #创建目录

ln -s /tmp/mysql.sock  /var/lib/mysql/mysql.sock   #添加软链接

mysql_secure_installation   #设置 Mysql 密码,根据提示按 Y 回车输入 2 次密码

/usr/local/mysql/bin/mysqladmin -u root -p password “123456”   #或者直接修改密码

到此,mysql 安装完成!

配置篇

一、配置 MySQL 主服务器(192.168.21.128)

mysql -u root -p  #进入 MySQL 控制台

create database osyunweidb;   #建立数据库 osyunweidb

insert into mysql.user(Host,User,Password) values(‘localhost’,’osyunweiuser’,password(‘123456’));  #创建用户 osyunweiuser,密码 123456

grant all on osyunweidb.* to ‘osyunweiuser’@’192.168.21.130’ identified by ‘123456’ with grant option;  #授权用户 osyunweiuser 从 192.168.21.130 完全访问数据库,注意:这里的 192.168.21.130 是要连接数据库 Web 服务器 IP

insert into mysql.user(Host,User,Password) values(‘localhost’,’osyunweidbbak’,password(‘123456’));   #建立 MySQL 主从数据库同步用户 osyunweidbbak 密码 123456

flush privileges;   #刷新系统授权表

grant replication slave  on *.* to ‘osyunweidbbak’@’192.168.21.129’ identified by ‘123456’ with grant option;  #授权用户 osyunweidbbak 只能从 192.168.21.129 这个 IP 访问主服务器 192.168.21.128 上面的数据库,并且只具有数据库备份的权限

二、把 MySQL 主服务器 192.168.21.128 中的数据库 osyunweidb 导入到 MySQL 从服务器 192.168.21.129 中

1、导出数据库 osyunweidb

mysqldump -u root -p –default-character-set=utf8 –opt -Q -R –skip-lock-tables osyunweidb > /home/osyunweidbbak.sql    #在 MySQL 主服务器进行操作,导出数据库 osyunweidb 到 /home/osyunweidbbak.sql

备注:在导出之前可以先进入 MySQL 控制台执行下面命令

flush tables with read lock;    #数据库只读锁定命令,防止导出数据库的时候有数据写入

unlock tables;   #解除锁定

scp /home/osyunweidbbak.sql root@192.168.21.129:/home   #把 home 目录下的 osyunweidbbak.sql 数据库文件上传到 MySQL 从服务器的 home 目录下面

2、导入数据库到 MySQL 从服务器

mysql  -u root -p  #进入从服务器 MySQL 控制台

create database osyunweidb;   #创建数据库

use osyunweidb    #进入数据库

source  /home/osyunweidbbak.sql  #导入备份文件到数据库

mysql -u osyunweidbbak -h 192.168.21.128 -p  #测试在从服务器上登录到主服务器

三、配置 MySQL 主服务器(192.168.21.128)的 my.cnf 文件

vi /etc/my.cnf   #编辑配置文件,在 [mysqld] 部分添加下面内容

server-id=1   #设置服务器 id,为 1 表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

log-bin=mysql-bin  #启动 MySQ 二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

binlog-do-db=osyunweidb  #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

binlog-ignore-db=mysql   #不同步 mysql 系统数据库

:wq!   #保存退出

service mysqld  restart  #重启 MySQL

mysql -u root -p   #进入 mysql 控制台

show variables like ‘server_id’;  #查看 server-id 的值是否为 1

mysql> show variables like ‘server_id’;

+—————+——-+

| Variable_name | Value |

+—————+——-+

| server_id    | 1    |

+—————+——-+

1 row in set (0.00 sec)

show master status;  #查看主服务器,出现以下类似信息

mysql> show master status;

+——————+———-+————–+——————+

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

mysql-bin.000011 |      107 | osyunweidb  | mysql            |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

注意:这里记住 File 的值:mysql-bin.000011 和 Position 的值:107,后面会用到。

四、配置 MySQL 从服务器(192.168.21.129)的 my.cnf 文件

vi /etc/my.cnf   #编辑配置文件,在 [mysqld] 部分添加下面内容

server-id=2   #设置服务器 id,修改其值为 2,表示为从数据库

log-bin=mysql-bin  #启动 MySQ 二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

replicate-do-db=osyunweidb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

replicate-ignore-db=mysql   #不同步 mysql 系统数据库

read_only  #设置数据库只读

:wq!    #保存退出

service mysqld restart   #重启 MySQL

mysql  -u root -p  #进入 MySQL 控制台

show variables like ‘server_id’;  #查看 server-id 的值,必须为上面设置的 2,否则请返回修改配置文件

mysql> show variables like ‘server_id’;

+—————+——-+

| Variable_name | Value |

+—————+——-+

| server_id    | 2    |

+—————+——-+

1 row in set (0.01 sec)

slave stop;   #停止 slave 同步进程

change master to master_host=’192.168.21.128′,master_user=’osyunweidbbak’,master_password=’123456′,master_log_file=’mysql-bin.000011 ,master_log_pos=107;    #执行同步语句

slave start;    #开启 slave 同步进程

SHOW SLAVE STATUS\G   #查看 slave 同步信息,出现以下内容

mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.21.128

Master_User: osyunweidbbak

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000011

Read_Master_Log_Pos: 107

Relay_Log_File: mysqlslave-relay-bin.000004

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000011

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: osyunweidb

Replicate_Ignore_DB: mysql

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 107

Relay_Log_Space: 560

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1 row in set (0.00 sec)

mysql>

注意查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上这两个参数的值为 Yes,即说明配置成功!

测试篇

测试 MySQL 主从服务器是否正常运行

1、进入 MySQL 主服务器(192.168.21.128)

mysql -u root -p  #进入 MySQL 控制台

use osyunweidb   #进入数据库

CREATE TABLE test (id int not null primary key,name char(20) );   #创建 test 表

2、进入 MySQL 从服务器

mysql -u root -p  #进入 MySQL 控制台

use osyunweidb   #进入数据库

show  tables;  #查看 osyunweidb 表结构,会看到有一个新建的表 test,表示数据库同步成功

mysql> show  tables;

+———————-+

| Tables_in_osyunweidb |

+———————-+

| test                |

+———————-+

1 row in set (0.00 sec)

至此,Linux 下 MySQL 数据库主从同步配置完成!

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/143017.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计8583字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
8000956
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...