千家信息网

MYSQL主从搭建的方法是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"MYSQL主从搭建的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MYSQL主从搭建的方法是什么"吧!一、MySQL主从
千家信息网最后更新 2026年11月01日MYSQL主从搭建的方法是什么

这篇文章主要讲解了"MYSQL主从搭建的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MYSQL主从搭建的方法是什么"吧!

一、MySQL主从复制搭建

MySQL主从复制搭建主要步骤有:安装mysql软件、Master端配置部署、Slave端配置部署、建立主从同步

1、 安装MYSQL

a、环境准备及软件安装

应用需求:

双机热备提供备份,冗余功能

安装环境:

NODE1 主机名 master IP地址 192.168.159.128

NODE2 主机名 slave IP地址 192.168.159.129

VIA IP(漂移IP)10.10.10.100

NODE1为主节点,NODE2为从节点,同步的数据库名fire9

在安装之前请确认下面的安装包不存在

rpm -e mysql-devel-4.1.20-1.RHEL4.1

rpm -e mysql-bench-4.1.20-1.RHEL4.1

rpm -e php-mysql-4.3.9-3.15

rpm -e libdbi-dbd-mysql-0.6.5-10.RHEL4.1

rpm -e mod_auth_mysql-2.6.1-2.2

rpm -e mysql-server-4.1.20-1.RHEL4.1

rpm -e MySQL-python-1.0.0-1.RHEL4.1.i386

rpm -e MyODBC-2.50.39-21.RHEL4.1.i386

rpm -e qt-MySQL-3.3.3-9.3.i386

rpm -e mysqlclient10-devel-3.23.58-4.RHEL4.1.i386

rpm -e mysqlclient10-3.23.58-4.RHEL4.1

rpm -e cyrus-sasl-sql-2.1.19-5.EL4.i386

rpm -e perl-DBD-MySQL-2.9004-3.1.i386

rpm -e mysql-4.1.20-1.RHEL4.1

安装准备:我已经把相关的软件和配置文件都放在工具包里面了

redhat as 4 update4 32位

mysql-5.0.45-linux-i686-icc-glibc23.tar.gz

libnet-1.1.2.1-1.rh.el.um.1.i386.rpm

heartbeat-pils-2.0.4-1.el4.i386.rpm

heartbeat-stonith-2.0.4-1.el4.i386.rpm

heartbeat-2.0.4-1.el4.i386

perl-5.8.8.tar.gz

DBI-1.59.tar.gz

DBD-mysql-4.005.tar.gz

Time-HiRes-01.20.tar.gz

Period-1.20.tar.gz

Convert-BER-1.31.tar.gz

Mon-0.11.tar.gz

mon-0.99.3-47.tar.gz

b、安装MYSQL 主从都要进行安装

# tar zxvf mysql-5.0.45-linux-i686-icc-glibc23.tar.gz -C /usr/local/

# cd /usr/local/

# mv mysql-5.0.45-linux-i686-icc-glibc23 mysql

# cd mysql

# groupadd mysql

# useradd -g mysql mysql

#passwd mysql

# ./scripts/mysql_install_db --user=mysql

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

# chmod +x /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# /etc/rc.d/init.d/mysqld start

注:主从都使用yum install 的方式安装系统自带的mysql也可以使用,只是版本会比较低

2、 Master端配置部署

a、 在主服务器上的my.cnf配置文件中的[mysqld]节点下添加以下配置

黄色部分为新添加

vi /etc/my.cnf

[mysqld]

server-id=101

log-bin=/var/lib/mysql/mysql-bin.log

log-bin-index=/var/lib/mysql/mysql-bin.index

expire_logs_days=30

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

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

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

说明:

log-bin :给出二进制日志的所有文件基础名

log-bin-index :给出二进制日志文件的文件名,通常以000001开始,顺序递增。全名:master-bin.000001

server-id :mysql服务器唯一ID,在主从复制的所有服务器中必须唯一。

b、 创建用户,并赋予权限:

create user repl_user;

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY PASSWORD '******';

设置密码时会遇到报错:

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

解决办法:用select password('你想输入的密码');查询出你的密码对应的字符串

select password('123456');

查出的是*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

2、Slave端配置部署

a、配置参数:[mysqld]

黄色部分为新添加

vi /etc/my.cnf

[mysqld]

server-id=102

log-bin=/var/lib/mysql/mysql-relay-bin.log

log-bin-index=/var/lib/mysql/mysql-relay-bin.index

relay_log_purge=on

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

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

symbolic-links=0


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

3、建立主从同步

(重建备库也是使用该方法)

建立主从同步可以从主库上导出数据,也可以从已有的从库上导出数据,然后再导入到新的从库中,change master to建立同步。

3.1 、导出数据

在主库上导出数据:

mysqldump -u***-p***-S /data/mysql6001/mysql.sock --default-character-set=utf8 -q --single-transaction --master-data-A > /tmp/all_database.sql

(或者)在从库上导出数据:

mysqldump -u***-p***-S /data/mysql6001/mysql.sock --default-character-set=utf8 -q --single-transaction --dump-slave-A > /tmp/all_database.sql

NOTES:

--master-data和--dump-slave导出的备份中,会包含master_log_file和master_log_pos信息。

例子:

mysqldump -uroot --events --all-databases > /opt/mysql.dump

3.2、从库导入数据

mysql -u*** -p*** --default-character-set=utf8< all_database.sql

例子:

mysql -uroot

3.3、从库与主机建立同步

以下为建立主从同步最基本的6个项:change master to

master_host='xxx.xxx.xxx.xxx', # 主库IP

master_port=6001, # 主库mysqld的端口

master_user='repl', # 主库中创建的有REPLICATION SLAVE权限的用户

master_password='xxxxxxxx', # 该用户的密码

master_log_file='mysql-bin.000xxx', # 已在导入时指定了

master_log_pos=xxxxxx; #已在导入时指定了

start slave;

例子:

master_log_file和master_log_pos通过在主库上使用命令获得:

show master status \G;

在从库上执行:

change master to

master_host='192.168.159.128',

master_port=3306,

master_user='repl_user',

master_password='123456',

master_log_file='mysql-bin.000001',

master_log_pos=1071;

start slave;

二、主从复制状态检查及异常处理

1、主从复制状态检查

主库查看show master status\G

File: mysql-bin.000303

Binlog_Do_DB:

show master status\G

Position: 18711563

从库:

Master_Log_File: mysql-bin.000303--IO_threadRead_Master_Log_Pos: 18711563--IO_threadRelay_Master_Log_File: mysql-bin.000303--sql_threadExec_Master_Log_Pos: 18711163--sql_thread

b、通过show slave status\G查看错误信息:show slave status\G

Last_SQL_Errno: 1062

Last_SQL_Error: Error 'Duplicate entry '1' for key 'PRIMARY'' on query. Default database:

'test'. Query: 'insert into test values(1,2,3,4,5,6)'

c、通过错误日志查看错误信息:

140828 16:27:51 [ERROR] Slave SQL: Error 'Duplicate entry '1' for key 'PRIMARY'' on query.

Default database: 'test'. Query: 'insert into test values(1,2,3,4,5,6)',

Error_code: 1062

140828 16:27:51 [Warning] Slave: Duplicate entry '1' for key 'PRIMARY' Error_code: 1062

140828 16:27:51 [ERROR] Error running query, slave SQL thread aborted. Fix the problem,

and restart the slave SQL thread with "SLAVE START". We stopped at log

'mysql-bin.000303' position 18711163

根据这些报错信息,往往就能够定位到发生异常的原因。如果我们了解产生异常的具体事件,而且能够掌控,可以通过设置sql_slave_skip_counter参数来跳过当前错误。set global sql_slave_skip_counter=1;

a、直接set global sql_slave_skip_counter=n;(n设置很大的值,即:跳过所有错误),

b、设置slave_skip_errors=all;跳过所有类型的错误

c、直接查看主库的binlog,然后在从库上直接执行change master to。

这些方法都会导致主从数据不一致。

如果发现从库与主库差异太大,无法通过手动操作或数据修改重新建立同步。可以参考上述"MySQL主从复制搭建"重新搭建从库。

4、主从复制延迟

主从复制延迟,可能的原因有:

a、主从同步延迟与系统时间的关系,查看主从两台机器间系统时间差

b、主从同步延迟与压力、网络、机器性能的关系,查看从库的io,cpu,mem及网络压力

c、主从同步延迟与lock锁的关系(myisam表读时会堵塞写),尽量避免使用myisam表。一个实例里面尽量减少数据库的数量。

d、主从复制发生异常而中断,过很久之后才发现复制异常。可通过查看master与slave的status估算相差的日志。如果相差太大,则可以考虑重做从库。

5、MYSQL启动报错

MYSQL启动时报错:

Another MySQL daemon already running with the same unix socket

原因多个Mysql进程使用了同一个socket。

两个方法解决:

第一个是立即关机 使用命令 shutdown -h now 关机,关机后在启动,进程就停止了。

第二个直接把mysql.sock文件改名即可。也可以删除,推荐改名。

然后就可以启动mysql了。

6、ERROR-2013报错

ERROR-2013报错代码,可能造成的原因是

[ERROR] Slave I/O: error connecting to master 'repl_user@192.168.159.128:3306' - retry-time: 60 retries: 86400, Error_code: 2013

iptables -F

setenforce 0

7、ERROR-1045报错

Last_IO_Errno: 1045

Last_IO_Error: error connecting to master 'repl_user@192.168.159.128:3306' - retry-time: 60 retries: 86400

必须使用以下方法授权

select password('123456');

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

感谢各位的阅读,以上就是"MYSQL主从搭建的方法是什么"的内容了,经过本文的学习后,相信大家对MYSQL主从搭建的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

主从 同步 数据 方法 配置 文件 错误 延迟 信息 原因 密码 日志 主机 例子 服务器 用户 系统 节点 软件 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技与互联网 今日互联网科技 杭州互联网科技公司 致骋互联网科技 互联网科技视频素材 太原新华互联网科技学校怎么样 博兴的互联网电子科技公司 互联网科技实习生岗位职责 华服互联网科技官网 重庆互联网医院沙龙医盟信息科技 知域互联网科技有限公司大骗子 杭州壁岐互联网科技有限公司 哈尔滨屹滨互联网科技有限公司 电子科技大学互联网创业大赛 燊美集互联网科技有限公司 互联网数据科技专业 互联网科技实习生岗位 中天科技中国工业互联网 互联网科技新闻 河南商务圈互联网科技有限公司 亿人帮互联网科技有限公司 哈尔滨新华互联网科技学院 互联网科技与管理 互联网还是高科技吗 崇明区互联网教育科技诚信经营 合肥互联网科技公司公章图片 本届互联网大会上的黑科技 互联网科技机房 中国互联网公司的科技投入 广西泛欧互联网科技有限公司
0