双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1. 可以做灾备,其中一个坏了可以切换到另一个。 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。 对于异地热备,尤其适合灾备。
我使用 mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz 可在mysql官网下载,解压到目录/usr/local/mysql,复制 /usr/local/mysql_slave
useradd -s /bin/nologin -M /mysql
cp support-files/my-small.cnf my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
cp support-files/mysql.server /etc/init.d/mysqldSlave
/etc/init.d/mysqld 修改配置和属性
basedir=/usr/local/mysql
datadir=/data/mysql
conf=${basedir}/my.cnf
/etc/init.d/mysqldSlave 修改配置和属性
basedir=/usr/local/mysql_slave
datadir=/data/mysql_slave
conf=${basedir}/my.cnf
mysql/my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.sock
server-id =1
log-bin=gary
# 不同步的数据库,为Mysql的自带数据库
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
# 自增长列,每次增长2
auto-increment-increment=2
# 自增长列,从1开始,这样主数据库的id为基数,从数据库的id为偶数,避免出现相同id
auto-increment-offset=1
mysql_slave/my.cnf
[mysqld]
port = 3307
socket = /tmp/mysql_slave.sock
server-id =2
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
# 自增长列,每次增长2
auto-increment-increment=2
# 自增长列,从2开始
auto-increment-offset=2
mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
mysql_slave
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql_slave
/etc/init.d/mysql start
/usr/local/mysql -S /tmp/mysql.sock
mysql> grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123456' ;
mysq> flush privileges ;
flush tables with read lock ;
#解锁
unlock tables ;
mysql> show master status ;
+-------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------+----------+--------------+------------------+
| gary.000003 | 187 | | mysql,mysql |
+-------------+----------+--------------+------------------+
mysql> slave stop ;
mysql> change master to master_host='127.0.0.1',master_port=3306,master_user='repl',master_password='123456',master_log_file='gary.000003',master_log_pos=187 ;
mysql> slave start ;
在slave数据库上运行
show slave status \G
如果看到 Slave_IO_Running和 Slave_SQL_Running 都是yes说明主从数据库搭建成功了
SELECT @@global.tx_isolation ;
SELECT @@session.tx_isolation ;
SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
READ UNCOMMITTED 读取不提交
Read committed 读取提交
Repeatable read 重复读取,Mysql默认事务
Serializable 事务最高级别,不可使用
0为手动提交,1为自动提交
select @@autocommit;
set autocommit = 0;
COMMIT ## 提交事务
rollback ## 回滚
set autocommit = 1;