ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

如何在MySQL 5.5.20中设置复制(主/从)?

2019-08-06 01:15:46  阅读:190  来源: 互联网

标签:mysql replication mysql-5-5


我有两个服务器都在MySQL 5.5.20上运行,我想设置复制,因此Master上的每个更新/插入都会立即反映在Slave机器上.

我尝试过本教程(I used instructions given on this website.),但它无法正常工作.我发现在完成所有这些之后我无法……(((请根据您的经验更新此部分)))

你可以在MySQL 5.5.20中建议我一个经过测试和有效的方法吗?

解决方法:

请创建此脚本

在Linux提示下,打开像vi这样的编辑器

vi /root/CreateMySQLSlave.sh

并将这些行添加到它

MYSQL_MASTER_HOST=10.1.2.20
MYSQL_SLAVE_HOST=10.1.2.30
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQL_MASTER_CONN="-h${MYSQL_MASTER_HOST} ${MYSQL_CONN}"
MYSQL_SLAVE_CONN="-h${MYSQL_SLAVE_HOST} ${MYSQL_CONN}"

MYSQLDUMP_OPTIONS="--master-data=1"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --single-transaction"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --routines"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --triggers"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --flush-privileges"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --all-databases"

CREATE_REPL_USER="GRANT REPLICATION SLAVE ON *.* TO repluser@'%' IDENTIFIED BY 'replpass'"
mysql ${MYSQL_MASTER_CONN} -AN -e"${CREATE_REPL_USER}"

RELOAD_FILE=/root/MySQLData.sql
echo "STOP SLAVE;" > ${RELOAD_FILE}
echo "CHANGE MASTER TO master_host='${MYSQL_MASTER_HOST}'," >> ${RELOAD_FILE}
echo "master_port=3306," >> ${RELOAD_FILE}
echo "master_user='repluser'," >> ${RELOAD_FILE}
echo "master_password='replpass'," >> ${RELOAD_FILE}
echo "master_log_file='dummy-file'," >> ${RELOAD_FILE}
echo "master_log_pos=1;" >> ${RELOAD_FILE}
mysqldump ${MYSQL_MASTER_CONN} ${MYSQLDUMP_OPTIONS} >> ${RELOAD_FILE}
echo "START SLAVE;" >> ${RELOAD_FILE}

mysql ${MYSQL_SLAVE_CONN} -A < ${RELOAD_FILE}

接下来,使文件可执行并运行它

chmod +x /root/CreateMySQLSlave.sh
/root/CreateMySQLSlave.sh

而已 !!!

确保为MYSQL_MASTER_HOST和MYSQL_SLAVE_HOST设置IP地址

顺便说一句,不要担心CHANGE MASTER TO的master_log_file参数中的虚拟文件.由于–master-data = 1,转储文件的第29行应该具有正确的设置.您可以通过对转储文件执行此操作来查看它

head -29 /root/MySQLData.sql | tail -1

确保主服务器上已启用二进制日志记录.以下是如何判断:运行SHOW MASTER STATUS;.如果你什么也得不到,你需要像这样启用它:

将其添加到/etc/my.cnf

[mysqld]
log-bin=mysql-bin

然后重启mysql

好的,负责Master的二进制日志记录.

您还需要确保主服务器和从服务器具有不同的服务器ID.您可以这样告诉我们:

运行SHOW VARIABLES LIKE’server_id’;如果结果为1,则必须明确设置.

转到大师并将其添加到/etc/my.cnf

[mysqld]
server-id=1

转到奴隶并将其添加到/etc/my.cnf

[mysqld]
server-id=2

这里的主要内容是确保在Master和Slave上的my.cnf中明确设置了server_id.您还必须确保server_id值与复制拓扑中涉及的所有其他服务器不同.

如果您是新手,请让sysadmin加入您的行列.

标签:mysql,replication,mysql-5-5
来源: https://codeday.me/bug/20190806/1594218.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有