分类: Mysql/postgreSQL
2008-07-21 22:25:59
linux 版本:redhat enterprise AS4U2; kernel is
mysql 版本:mysql-max-
环境介绍:主库 192.168.1.1 从库 192.168.1.2
1、安装MYSQL
# tar -zxvf mysql-max-
# mv mysql-max-
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local/mysql
# ./scripts/mysql_install_db --user=mysql &
# chown mysql.mysql data -R
# chmod 777 data -R
# chgrp -R mysql .
注意:主从服务器均要安装MYSQL
2、拷贝配置文件
# cp support-files/my-medium.cnf /etc/my.cnf
3、修改主库/etc/my.cnf,修改[mysqld]里边的键值增加
[mysqld]
server-id=1
log-bin=binlog_name
/*
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:
innodb_log_group_home_dir = /usr/local/mysql/data/
innodb_log_arch_dir = /usr/local/mysql/data/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size =
innodb_additional_mem_pool_size =
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size =
innodb_log_buffer_size =
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
*/
注意: /**/中的配置在主从数据库的my.cnf文件中都要打开
4、主库增加用户,用于从库读取主库日志。
mysql>grant replication slave,reload,super on *.* to 'slave'@'192.168.1.2' identified by '123456'
接下来备份Master上的数据,首先执行如下SQL语句:
mysql>FLUSH TABLES WITH READ LOCK;
不要退出这个终端,否则这个锁就不生效了;接着导出数据,可以直接打包压缩数据文件,也可以使用mysqldump工具来做,推荐前者的方法,这样更为快捷简便。 |
# cd /usr/local/mysql
# tar zcf data.tar.gz ./data
然后将这些数据拷贝到Slave服务器上,解开,设置好正确的权限及属主等;之后,执行 "UNLOCK TABLES" 语句来释放锁。
5、从库连接主库进行测试。
# cd /usr/local/mysql
# ./bin/mysql -h192.168.1.1 -uslave -p
mysql>SHOW GRANTS;
6、停从库,修改从库/etc/my.cnf,增加选项:
[mysqld]
server-id=2
master-host=192.168.1.1
master-user=slave
master-password=123456
replicate-ignore-db=mysql #略过同步的数据库名,如果有多个,请设置多次
replicate-do-db = database2 #想要同步的数据库名,如果有多个,请设置多次
log-warnings
/*
加入前面注释掉的段落
*/
5、启动从库,进行主从库数据同步
# cd /usr/local/mysql
# ./bin/mysqld_safe --user=mysql &
# ./bin/mysql -u root -p
mysql>start slave;
mysql>load data from master;
注意:这一步也可以用数据库倒入或者直接目录考过来。
6、进行测试:
主库创建表,
mysql>create database new;
mysql>use new;
mysql>create table wen (name char(20),phone char(20));
mysql>insert into wen values('abc,'0532555555');
mysql>slect * from wen;
打开从库,察看:
# ./bin/mysql -u root -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| new |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql>use new;
mysql> show tables;
+---------------+
| Tables_in_new |
+---------------+
| wen |
+---------------+
1 row in set (0.01 sec)
说明主从数据库创建成功。
7、主从数据库相关命令:
slave stop; slave start ;
开始停止从数据库。
show slave status\G;
显示从库正读取哪一个主数据库二进制日志
可以看到,Slave_IO_Running 和 Slave_SQL_Running 两列的值都为 "Yes",这表明 Slave 的 I/O 和 SQL 线程都在正常运行。
purge master logs to 'binlog.000004';
此命令非常小心,删除主数据库没用的二进制日志文件。如果误删除,那么从库就没有办法自动更新了。
change master;
从服务器上修改参数使用。
如果要更新主服务器信息,在从服务器上需要有如下操作
1. 停止从服务器
2. 删除data目录下的master.info 文件
3. 更改/etc/my.cnf相关主服务器信息
4. 重新启动数据库