目的: 用两台PC server实现主从备份,其中OS和应用的热备由HA完成,数据库采用mysql,采用主从模式实现数据库热备。
两台服务器是hp dl380g5,硬盘采用预设运行的raid5。
RAID5需要三块或三块以上同厂家、同型号、同容量的硬盘搭建,硬盘需要支持热插拔,所组成的阵列容量是所有硬盘容量减去少于一块硬盘的容量之差 。在三盘数据存储之外,还会在存储的同时自动生成奇、偶校验信息,分别存储在不同的硬盘里,占据相对微小的空间。奇偶校验信息耗费的空间有限,但恢复数据的能力却庞大无比。拔出故障盘,换上无故障的新盘,存储于另外一盘中的相对奇或偶校验,均能依据存储在不同盘中的奇、偶校验信息对数据进行有效的恢复。
接着是分区,结果如下:
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqldump [options] --all-databases
shell> mysqlimport [options] db_name textfile1 [textfile2 ...]
mysql> show engines\G
shell> chown -R user_name /path/to/mysql/datadir
1. 两台服务器做ttt,分别叫做ttt1和ttt2
2. 启动或关闭mysql的脚本
/opt/mysql/share/mysql/mysql.server {start|stop}
3. 给ttt1和ttt2的mysql互相Grant权限
4. master-master的配置关键在于设置auto_increment_increment 和 auto_increment_offset
这两个东西其实影响的是mysql里面自增字段的增长方式。比如某个走1 3 5, 另一个就会走2 4 6.
一般配置的原则是:
如果有N 个Mysql 几点(N=2),那么auto_increment_increment就在所有的节点上设置成N,同时每个节点
设置一个不同的auto_increment_offset值(1, 2, ..., N)
ttt1上
log-bin=mysql-bin server-id = 1 replicate-same-server-id = 0 auto-increment-increment = 2 auto-increment-offset = 1 master-host=ttt2 master-port=3306 master-user=mysql master-password=mysql master-connect-retry=60 relay-log = slave-relay.log relay-log-index = slave-relay-log.index expire_logs_days = 10 max_binlog_size = 2000M slave-skip-errors=126,1062
ttt2上
log-bin=mysql-bin server-id =2 replicate-same-server-id = 0 auto-increment-increment = 2 auto-increment-offset = 2 master-host=ttt1 master-port=3306 master-user=mysql master-password=mysql master-connect-retry=60 log-bin=mysql-bin relay-log = slave-relay.log relay-log-index = slave-relay-log.index expire_logs_days = 10 max_binlog_size = 2000M slave-skip-errors=126,1062
5将ttt1上的数据库dump到ttt2上
ttt1> mysqldump -u root --opt exampledb > snapshot.sql scp snapshot.sql root@ttt2:/tmp ttt2> /usr/bin/mysqladmin --user=root --password=yourrootsqlpassword stop-slave cd /tmp mysql -u root exampledb < snapshot.sql
6. 查看各自master的状态
show master status
7. 指定各自master开始读的位置
CHANGE MASTER TO MASTER_HOST='ttt1', MASTER_USER='mysql', MASTER_PASSWORD='mysql', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=84828; CHANGE MASTER TO MASTER_HOST='ttt2', MASTER_USER='mysql', MASTER_PASSWORD='mysql', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=84828;
8. 查看并验证
在ttt1和ttt2上输入show slave status。输出结果中
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
需要是yes。
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
SHOW SLAVE STATUS\G
exit;
mysql> UNLOCK TABLES;
mysql> CHANGE MASTER;
mysql> stop slave;
mysql> start slave;
mysql> reset master;
http://www.linuxdiyf.com/bbs/viewthread.php?tid=64101&highlight=
番外--mysql的rails驱动安装
http://www.tmtm.org/en/mysql/ruby/ tar xzvf mysql-ruby-2.7.3.tar.gz cd mysql-ruby-2.7.3 ruby extconf.rb --with-mysql-dir=/opt/mysql5 make && make install