mysql 主从同步设置
前提,两台安装了同样版本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配置文件里,典型脑残啊,特此纪念一把,多花了一个小时的时间。
上一篇: 新手程序员的快速成长之道
下一篇: php 获取当前网址