加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.52wenzhou.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL主从搭建的方法教学

发布时间:2021-12-21 11:23:27 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要介绍MYSQL主从搭建的方法教程,在日常操作中,相信很多人在MYSQL主从搭建的方法教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答MYSQL主从搭建的方法教程的疑惑有所帮助!接下来,请跟着小编一起来学习吧! 一
这篇文章主要介绍“MYSQL主从搭建的方法教程”,在日常操作中,相信很多人在MYSQL主从搭建的方法教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL主从搭建的方法教程”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
 
一、MySQL主从复制搭建
MySQL主从复制搭建主要步骤有:安装mysql软件、Master端配置部署、Slave端配置部署、建立主从同步
安装操作系统环境:REDHAT6.5
 
以下内容都是自己在虚拟机亲测
 
1、安装MYSQL
a、环境准备及软件安装
安装环境:
 
NODE1 主机名 master      IP地址 192.168.159.128
 
NODE2 主机名 slave       IP地址 192.168.159.129
 
b、安装MYSQL 主从都要进行安装
#tar zxvf mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
 
# cd /usr/local/
 
# mv mysql-5.6.38-linux-glibc2.12-x86_64 mysql
 
# cd mysql
 
# groupadd mysql
 
# useradd -g mysql mysql
 
# passwd mysql
      # cd /usr/local/
 
#  chown -R mysql.mysql mysql
 
# ./script/mysql_install_db --user=mysql
      # cd /usr/local/mysql
      # chown -R root:root ./
      # chown -R mysql:mysql data
 
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
 
# chmod u+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信息。
 
--master-data选项的作用,是将二进制的信息写入到输出文件中,在这里是写入到备份的sql文件中。
 
--dump-slave选项的作用,是用户在slave端dump数据,建立新的slave,至少是第2个slave,也就是已经有A-->B,现在从B上导出数据建立A-->C的复制,这个不但可以用于建立slave,还可用于备份中,用于读binlog进行roll forward的起点
 
例子:(实际直接主库全库导出即可)
 
mysqldump -uroot --events --all-databases > /opt/mysql.dump
 
3.2、从库导入数据
mysql -u*** -p*** --default-character-set=utf8< all_database.sql
 
例子:
 
mysql -uroot <mysql.dump </mysql.dump
 
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、MYSQL启动报错
(1)MYSQL启动时报错:
Another MySQL daemon already running with the same unix socket
 
原因多个Mysql进程使用了同一个socket。
 
两个方法解决:
 
第一个是立即关机 使用命令 shutdown -h now 关机,关机后在启动,进程就停止了。
 
第二个直接把mysql.sock文件改名即可。也可以删除,推荐改名。
 
然后就可以启动mysql了。
 
(2)在REDHAT7.0版本安装MYSQL5.6.38时遇到以下启动报错
service mysql start
Starting MySQL.180424 22:21:31 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
 ERROR! The server quit without updating PID file (/var/lib/mysql/REDHAT70.pid).
 
 
解决方法:
mkdir -p /var/log/mariadb/
cd /var/log/mariadb/
touch mariadb.log
chmod -R 775 mariadb.log
chown -R mysql:mysql mariadb.log
 
2、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
 
3、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';4、登陆MYSQL报错ERROR-2002
 
登陆MYSQL时如果报错:
 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
 
 解决方法:
 
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
 
到此,关于“MYSQL主从搭建的方法教程”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读