Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86263
  • 博文数量: 31
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-26 13:33
文章分类

全部博文(31)

文章存档

2009年(5)

2008年(26)

我的朋友

分类: Mysql/postgreSQL

2008-07-21 22:25:59

linux 版本:redhat enterprise AS4U2; kernel is 2.6.9-22.ELsmp

mysql 版本:mysql-max-5.0.16-linux-i686-glibc23.tar.gz

环境介绍:主库 192.168.1.1 从库 192.168.1.2

 

1、安装MYSQL

# tar -zxvf mysql-max-5.0.16-linux-i686-glibc23.tar.gz

# mv mysql-max-5.0.16-linux-i686-glibc23 /usr/local/mysql

# 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:10M:autoextend

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 = 16M

innodb_additional_mem_pool_size = 2M

# Set .._log_file_size to 25 % of buffer pool size

innodb_log_file_size = 5M

innodb_log_buffer_size = 8M

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.       重新启动数据库

阅读(920) | 评论(0) | 转发(0) |
0

上一篇:linux rsync命令

下一篇:linux SSH 问题集锦

给主人留下些什么吧!~~