MySQL主从配置
建议: MySQL主从机制比较脆弱,谨慎操作。如果重启master,务必要先把slave停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master的mysql服务,否则很有可能就会中断了。当然重启完后,还需要把slave给开启 slave start.
1.安装、配置MySQL
删除之前的配置:cd /usr/local/;rm -rf mysql
重新配置主mysql
cd /usr/local/src/
下载mysql:wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
解压:tar zxvf /usr/local/src/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
移动解压包:mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql
建立mysql用户:useradd -s /sbin/nologin mysql
进入mysql目录:cd /usr/local/mysql
拷贝配置文件: cp support-files/my-small.cnf /etc/my.cnf
拷贝启动脚本:cp support-files/mysql.server /etc/init.d/mysqld
修改启动脚本:vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
初始化mysq数据库:./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
重启mysql服务:/etc/init.d/mysqld restart
做从mysql
cd /usr/local/; cp -r mysql mysql_slave; cd mysql_slave;
拷贝配置文件:cp /etc/my.cnf ./my.cnf
修改配置文件相关参数:vim my.cnf #更改port 以及 socket
[mysqld]
port = 3307
socket = /tmp/mysql_slave.sock
datadir =/data/mysql_slave
初始化mysql_slave数据库:./scripts/mysql_install_db --user=mysql --datadir=/data/mysql_slave
启动mysql_slave:
cd /etc/init.d/
拷贝启动脚本:cp mysqld /etc/init.d/mysqld_slave
配置启动脚本:vim !$
basedir=/usr/local/mysql_slave
datadir=/data/mysql_slave
conf=$basedir/my.cnf
/etc/init.d/mysqldslave start
netstat -lnp | grep mysql
2.配置主从准备工作
设定,mysq为主端口3306,mysql_slavel为从端口为3307
mysql登录方式: mysql -h127.0.0.1 -P3307; mysql -S /tmp/mysql_slave.sock
在主上创建测试库: create database db1;
然后导出主的mysql库数据然后导入给db1
mysqldump -S /tmp/mysql.sock mysql > 123.sql
mysql -S /tmp/mysql.sock db1 < 123.sql
3. 配置主(master)
vim /etc/my.cnf #修改或添加:
server-id=1 //主从id不一样即可
log-bin=mysql-bin
两个可选参数(2选1):
binlog-do-db=db1,db2 #需要同步的库
binlog-ignore-db=mysql #忽略不同步的库
修改配置文件后,重启mysql
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123123';
flush privileges; #刷新
flush tables with read lock; #锁表
show master status; #一定要记住前两列的内容,一会会用到
4. 设置从(slave)
vim /usr/local/mysql_slave/my.cnf #修改或增加
server-id = 2 #这个数值不能和主一样
/etc/init.d/mysqld_slave restart
find / -name 123.sql
拷贝主的db1库数据到从(同步的前提是库名相同):mysql -S /tmp/mysql_slave.sock -e "create database db1"; mysql -S /tmp/mysql_slave.sock db1 < 123.sql
mysql -S /tmp/mysql_slave.sock #登陆从的mysql
指定主的host、port等:
change master to master_host='127.0.0.1', master_port=3306,
master_user='repl', master_password='123123',
master_log_file='mysql-bin.000002', master_log_pos=106;
slave start;
从上查看从的状态: show slave status\G;(如果不是两个yes,调试后,先slave stop,再slave start;show slave status\G;)
5. 测试主从
主上:unlock tables;
主上清空db1库的db表 :use db1; select count(*) from db"; truncate table db;
进入slave,查看db1库db表: use db1; select count(*) from db";
主上删除表db: drop table db;
从上看db表不存在了

浙公网安备 33010602011771号