Mysql Master/Slave环境搭建

参考http://coffeant.diandian.com/post/2010-08-17/15235348

环境:两个虚拟机

主库服务器centos6.3,192.168.202.129

从库服务器freebsd9,192.168.202.130


一。centos master mysql配置
1.配置mysql master/slave


mysql启动/停止:
/etc/init.d/mysqld start 
/etc/init.d/mysqld stop
连接mysql
mysql -hlocalhost -uroot -P3306 -ppassword


创建Master数据库
create database www;
use www;
create table blog(id int);
show tables;
quit;


配置master:
cp /etc/my.cnf /etc/my.cnf.bak
vim /etc/my.cnf


[mysqld]节点添加:
log-bin=mysql-bin
server-id=1
binlog-do-db=www
#binlog-do-db=test 同步多个数据库配置多行即可
binlog-ignore-db=mysql,test


/etc/init.d/mysqld start 
/etc/init.d/mysqld stop
mysql>show master status;#查看my.ini是否配置成功


增加从库同步账号:
mysql>grant replication slave,reload,super,select on *.* to slave@'%' identified by 'slave';   %表示不限制同步账号登录ip,可以替换为指定ip
mysql>flush privileges;

配置centos下mysql自动启动

#chkconfig mysqld on



配置主库完成


二。freebsd slave mysql配置


1.安装mysql
#cd /usr/ports/
#make search name=mysql-server
#cd /usr/ports/databases/mysql51-server/ 进入mysql5.1的ports目录
#make install clean;进行编译,需要等待一会儿,时间视机器快慢与网络速度综合而定,进行编译后的清理,不进行也可
#pkg_info -L mysql-server-5.1.60 查看安装目录
#ee /etc/rc.conf ;对此rc.conf进行编辑,在最后一行后添加一行,内容是mysql_enable="YES",目的是实现mysql开机自动启动。按ESC选a再选a保存退出
#cd /usr/local/etc/rc.d/ ;进入mysql的启动命令目录
#mysql-server start ;进行mysql的初始化,同时启动mysql
#ps -A | grep mysql ;查看mysql是否运行。目的是查看有无一个名字中包含mysql字符的进程在运行
#netstat -a ;进一步查看mysql的运行状态,目的为查看tcp 3306端口是否处于listen状态
#/usr/local/bin/mysql ;登陆mysql,出现了mysql>提示符,证明工作基本正常,敲exit回到#状态
#/usr/local/bin/mysqladmin -u root password 111111;设置mysql管理员密码
#/usr/local/bin/mysql -u root -p ;登陆mysql,要求密码,输111111,出现了mysql>提示符,证明密码修改成功,敲exit回到#状态
#reboot ;重启,启动后登陆
#/usr/local/bin/mysql -u root -p ;登陆成功,说明mysql已经自动启动




创建Slave数据库(会有错误,show slave STATUS查看Error 'Table 'www.blog' doesn't exist' on query. Default database: 'www'. Query: 'INSERT INTO blog VALUES(1)'


create database www;
use www;
create table blog(id int);
show tables;
quit;


freebsd安装的mysql,默认没有配置文件,需要把/usr/local/share/mysql/my-large.cnf拷贝为/usr/local/etc/my.cnf
在[mysqld]下添加:
server-id = 2
log-bin = mysql-bin  #如果不做双向同步则slave机不需要写二进制日志的
master-host = 192.168.202.129
master-user = slave     #Slave主机访问Master的用户名
master-password = slave #Slave主机访问Master的密码
master-port = 3306




(此段没有用:
log-slave-updates
replicate-ignore-db = mysql #不同步的数据库
replicate-do-db = db_user #要同步的数据库
replicate-do-db = db_topic
)


重启Master和Slave
#/etc/init.d/mysqld start

#/etc/init.d/mysqld stop

mysql>show master status;#查看my.ini是否配置成功




创建帐号 (Slave访问Master)
#mysql -uroot -p
mysql>grant replication slave,reload,super,select on *.* to slave@'%' identified by 'slave';
mysql>flush privileges;


(
此段没有用:
备份Master主机的数据库(www)
#如果表结构都是MyISAM,可以直接copy文件
mysql> flush tables with read lock; #加锁,禁止写操作
mysql> mysqldump -uroot -p111111 -P3306 -–databases www > www.sql
#mysqldump -uroot -P3306 --databases www > www.sql
将Master的数据导入到Slave
如果所有的数据库表结构都是MyISAM
mysql>load data from master;
否则
mysql -uroot < www.sql
)


主从库不能通信及不允许远程连接mysql的原因:


1.不允许远程连接MYSQL错误:
mysql授权表里没有远程机器的权限,及需要在授权表mysql.user添加
grant all privileges on *.* to 'root'@'远程登陆IP' identified by '远程登陆密码';
flush privileges;
GRANT ALL PRIVILEGES ON dbname.* TO 'root'@'%'  IDENTIFIED BY '111111';
flush privileges;


dbname.* 指授权某个数据库dbname下的所有表的所有权限  *.*指所有数据库的所有表  %指不限制登录ip,可以替换为指定登录ip '111111'为密码  ALL PRIVILEGES指所有权限


2.远程连接mysql(Can't connect to MySQL server on '' (10060)错误):
需要打开防火墙3306端口:
linux下以iptable为例
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
#service iptables restart
#/etc/init.d/iptables status
#/etc/init.d/iptables restart


网上说法(http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1344552):
ps:  iptables设置
1) 重启后生效 
开启: chkconfig iptables on 
关闭: chkconfig iptables off 
2) 即时生效,重启后失效 
开启: service iptables start 
关闭: service iptables stop


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值