MYSQL主从配置

2010-05-14 14:22
mysql-5.1.35.tar.gz
tar mysql-5.1.35.tar.gz
cd mysql-5.1.35
./configure --prefix=/usr/local/mysql --with-extra-charset=all --with-collation=utf8_swedish_ci --with-charset=utf8 -with-mysqld-ldflags=-all-static --without-debug --enable-assembler --with-mysqld-user=mysql
make && make install
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --user=mysql
cp ./support-files/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysqld_safe --user=mysql &
我的my.cnf,加入
 
server-id             = 1
log-bin=mysql-bin #二进制形式存储日志
binlog-do-db=test #可以同步的数据库,多库可以多行设置
binlog-do-db=test2
 
进入mysql,并查看master
mysql -uroot -p
设置从机权限(添加从机数据同步的帐号和密码)
grant replication slave on *.* to 'readone'@'192.168.0.210' identified by 'dian588@2010';
创建需要同步的数据表
use test;
create table user(id int);
 
因为需要将基本的数据备份给从机,为避免错误发生,所以需要锁定表
flush tables with read lock;
exit;
mysqldump -uroot -p test > test.sql
然后再次进去mysql,解锁,这步细节一定要做,因为不解锁,那么从机无法同步数据了。
unlock tables;
然后查看日志id:
 
mysql> show master status;
+------------------+----------+-----------------------+------------------+
| File             | Position | Binlog_Do_DB          | Binlog_Ignore_DB |
+------------------+----------+-----------------------+------------------+
| mysql-bin.000001 |      819 | dedecms204,dedecms206 |                  | 
+------------------+----------+-----------------------+------------------+
 
下面进入从机设置:
my.cnf
 
#server-id            = 1    #一定记得注释掉默认的这个,不然会和主机冲突
server-id             =2
replicate-do-db=test #允许同步的数据库,多库可以多行设置
replicate-do-db=test2
master-connect-retry=30
log-bin=mysql-bin
master-host=192.168.181.54 #主机地址
master-user=readone #主机用户名
master-password=shanghai #主机密码
master-port=3306
read-only=1 #只允许读操作
 
进入从机mysql
mysql -uroot -p
导入之前从主机导出的数据库test,
use test;
source /home/xiezhanhui/test.sql;
 
添加master相关信息
change master to master_user='readone'; #帐号
change master to master_password='shanghai'; #密码
change master to master_host='192.168.181.54'; #地址
change master to master_log_file='mysql-bin.000002'; #注意,这个是之前show master status;里得到的。
change master to master_log_pos=106; #这个是之前show master status;里得到的。
 
start slave; #启动从模式
mysql> show slave status \G #查看其状态
以下两项都为yes即是从机配置成功的标志。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
 
至此,基本配置已经完成了。好了,我们测试一下
首先在主机上添加一条记录
use test;
insert into user(id)values('11');
然后到从机查询
use test;
select * from user;
有结果,是刚刚在主机上写入的数据,整个配置过程OK,值得大家注意的是,配置的过程一定要注意细节,一点都不能错,不然会引发一些不必要的错误或盲点,最后解占辉提示大家一点,作为一名出色的系统架构师更应该细心,一点错误都不能发生,你说呢