快速设定mysql主从数据库

环境•centos 5.4

 
1. 主数据库服务器Master:/etc/my.cnf
 [mysqld]
server-id = 1
log-bin
innodb_flush_log_at_trx_commit=1
sync_binlog=1
datadir=/var/lib/mysql

character-set-server=utf8
init_connect='SET NAMES utf8'
设定了默认字符集为utf8,可以按实际情况取舍这段配置。
 
2. 从数据库服务器Slave:/etc/my.cnf
 [mysqld]
server-id=2
datadir=/var/lib/mysql

character-set-server=utf8
init_connect='SET NAMES utf8'
3. Master:在master与slave数据库都设置用来同步的slave用户权限
 GRANT REPLICATION SLAVE ON *.*
TO '<slave_username>'@'<slave_ip>'
IDENTIFIED BY '<slave_password>';

4. Master:导出数据到slave
 
采用xtrabackup来备份mysql,好处是在master的锁表时间很短,在实际的生产环境也

可以使用,并且xtrabackup会自动记录同步日志文件的位置。
 sudo innobackupex-1.5.1 --stream=tar /tmp/ | ssh <slave_host> "mkdir

/tmp/db; tar xfi - -C /tmp/db/"
这个步骤会把master的数据包括表结构整个导出并压缩复制给slave,同时解压到slave

的/tmp/db目录下。
 
5. Slave:导入数据到slave
innobackupex-1.5.1 --apply-log /tmp/db
innobackupex-1.5.1 --copy-back /tmp/db
chown -R mysql.mysql /var/lib/mysql/*
6. Slave:开始同步数据
 
查看/var/lib/mysql/xtrabackup_binlog_info,获得日志文件以及position。
 CHANGE MASTER TO
MASTER_HOST='<master_host>',
MASTER_USER='<slave_username>',
MASTER_PASSWORD='<slave_password>',
MASTER_LOG_FILE='<see xtrabackup_binlog_info>',
MASTER_LOG_POS=<see xtrabackup_binlog_info>;

START SLAVE;

 

验证是否成功

在主数据库上新建一个数据库,查看从数据库是不是也有了这个数据库;新建一张表或者插入一条记录,查看从数据库是否同步更新。

主数据库有数据的情况:
1、数据库锁表操作,不让数据再进行写入动作。mysql> FLUSH TABLES WITH READ LOCK;
2、察看主数据库的状态 mysql> show master status; 照前面记录输出值。
3、把主服务器数据文件复制到从服务器,最好先用压缩处理一下。
4、取消主数据库锁定 mysql> UNLOCK TABLES;
5、从服务器的操作和之前一样。记得先stop slave 然后start slave

 

你可能感兴趣的:(mysql,数据库,centos,服务器,File,数据库服务器)