欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql 主从同步设置

程序员文章站 2022-06-16 15:00:03
...

前提,两台安装了同样版本mysql的服务器(其实好像版本不一样也行,但是稳妥起见,还是用一样版本的mysql吧,毕竟俺是个小白)。 主服务器ip:192.168.2.19从服务器ip:192.168.2.155 停止前端nginx服务,既停止php向mysql发起请求 一.给主服务器上创建一个

前提,两台安装了同样版本mysql的服务器(其实好像版本不一样也行,但是稳妥起见,还是用一样版本的mysql吧,毕竟俺是个小白)。

主服务器ip:192.168.2.19 从服务器ip:192.168.2.155

停止前端nginx服务,既停止php向mysql发起请求

一.给主服务器上创建一个用户用于给从服务器同步使用:


grant all privileges on *.* to slaveuser@丛库IP identified by '密码';



二.停止这两台服务器上的mysql服务:


/usr/local/mysql/bin/mysqladmin shutdown --socket=/opt/db/mysql/mysql.sock -uroot -ppassword



三.修改主服务器的配置文件

server-id = 1 #主机标示,整数
log_bin = /opt/db/mysql/data/mysql-bin.log #确保此文件可写
read-only = 0 #主机,读写都可以
binlog-do-db = test #需要备份数据,多个写多行
binlog-do-db = anotherdb #需要备份数据,多个写多行



四.在从服务器上拉取主服务器中的要同步的库的表结构和数据(需要输入主服务器的root密码)

scp -r -p root@192.168.2.19:/opt/db/mysql/data/fb_cn /opt/db/mysql/data/

并且改变/opt/db/mysql/data/中fb_cn的用户和用户组



五.启动主服务器mysql服务(根据自己具体情况启动)


/usr/local/mysql/bin/mysqld_safe

--defaults-file=/opt/db/mysql/my.cnf #mysql配置文件位置

--basedir=/usr/local/mysql #mysql安装目录

--pid-file=/opt/db/mysql/mysql.pid #pid文件创建位置

--datadir=/opt/db/mysql/data #数据文件位置

--socket=/opt/db/mysql/mysql.sock #sock文件位置

--log-error=/opt/db/mysql/err.log #错误日志文件位置

--log-slow-queries=/opt/db/mysql/slowquery.log& #慢查询日志文件位置




六.查看主服务器mysql状态,记录file和position,很重要,在从库设置中将被用到,此时需保证主服务器mysql不会有写操作


/usr/local/mysql/bin/mysql -uroot --socket=/opt/db/mysql/mysql.sock -p (进入mysql环境)

>show master status;

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

|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|

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

|mysql-bin.000001|106| myslave | mysql

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



七.修改从服务器的配置文件


server-id = 2 #主机标示,整数

log_bin = /opt/db/mysql/data/mysql-bin.log #binlog

master-host = 192.168.2.19 #主服务器ip地址
master-user = slaveuser #主服务器用于主从设置的用户

master-pass = 密码 #主服务器用于主从设置的用户密码

master-port = 3306 #主服务器端口号
master-connect-retry = 60 #从服务器发现主服务器断掉,重新连接时间(秒)
replicate-do-db = test #要进行主从同步的库名,用逗号隔开

replicate-do-db = another #要进行主从同步的库名,用逗号隔开



八.启动从服务器(根据自己具体情况启动)


/usr/local/mysql/bin/mysqld_safe

--defaults-file=/opt/db/mysql/my.cnf #mysql配置文件位置

--basedir=/usr/local/mysql #mysql安装目录

--pid-file=/opt/db/mysql/mysql.pid #pid文件创建位置

--datadir=/opt/db/mysql/data #数据文件位置

--socket=/opt/db/mysql/mysql.sock #sock文件位置

--log-error=/opt/db/mysql/err.log #错误日志文件位置

--log-slow-queries=/opt/db/mysql/slowquery.log& #慢查询日志文件位置


九.进入从服务器mysql环境中,配置Slave信息


/usr/local/mysql/bin/mysql -uroot --socket=/opt/db/mysql/mysql.sock -p

>CHANGE MASTER TO

>MASTER_HOST='192.168.2.19', #主服务器ip

>MASTER_PORT=3306, #主服务器mysql服务端口

>MASTER_USER='slaveuser', #主服务器中用于主从连接的用户名

>MASTER_PASSWORD='密码', #主服务器中用于主从连接的用户密码

>MASTER_LOG_FILE='mysql-bin.000001', #从主服务器的master状态中读取的file

>MASTER_LOG_POS=106; #从主服务器的master状态中读取的position




十.启动Slave服务

>start slave;




十一.查看从服务器状态

>show slave status\G;

如果发现

Waitingfor master to send event

Slave_IO_Running:Yes

Slave_SQL_Running:Yes


总体来说,这个配置还是很成功的,但是由于操作问题,在配置过程中,大脑缺弦了,直接把replicate-do-db = another这个考到了从服务器的mysql配置文件里,典型脑残啊,特此纪念一把,多花了一个小时的时间。