关于mysql的同步和复制主要是指(Master---Slave)模式下的主从复制,下面将整体的过程描述一下:关于mysql的安装就不在重复,下面的过程中的mysql服务器是安装在一台host中的,通过不同的端口提供服务。具体环境如下:
- 地址:127.0.0.1
- 端口:7001
- 版本:mysql5.0.37
- 数据目录:/xxx/mysqlmaster/var
- 地址:127.0.0.1
- 端口:7003
- 版本:mysql5.0.37
- 数据目录:/xxx/mysqlslave1/var
- 地址:127.0.0.1
- 端口:7005
- 版本:mysql5.0.37
- 数据目录:/xxx/mysqlslave2/var
首先是配置Master服务器:
首先建立主库德配置文件:/xxx/mysqlmaster/my.cnf
- [mysqld]
- datadir=/xxx/mysqlmaster/var
- socket=/xxx/mysqlmaster/mysql.sock
- port=7001
- old_passwords=1
- log-bin=mysql-bin
- server-id=1270000000017001
- binlog_do_db=video
- binlog_ignore_db=mysql,test,information_schema
- [mysqld_safe]
- err-log=/xxx/mysqlmaster/mysqld.log
- pid-file=/xxx/mysqlmaster/var/test2.pid
- [mysql.server]
- user=mysql
- basedir=/xxx
server-id:服务器的唯一编号,这里不能重复
binlog_do_db:要同步的数据库
binlog_ignore_db:不同步的数据库
保存后,初始化数据目录:
/xxx/mysqlmaster/bin/mysql_install_db --defaults-file=/xxx/mysqlmaster/my.cnf
chown -R mysql.mysql /var/lib/dbmaster
下面启动数据库,并建立video数据库以及video数据表
- # /xxx/mysqlmaster/bin/mysqld_safe --defaults-file=/xxx/mysqlmaster/my.cnf &
- # /xxx/mysqlmaster/bin/mysql -uroot --socket=/xxx/mysqlmaster/mysql.sock -proot
- mysql > create database video;
- mysql > use video;
- mysql > create table video (name varchar(100));
- mysql > insert into video set name='aaaaaa';
下面配置数据库,首先创建一个用于复制的帐号,
- mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1' IDENTIFIED BY 'slavepass';
然后这时锁定表,并查看复制的状态
- mysql> FLUSH TABLES WITH READ LOCK;
- mysql> SHOW MASTER STATUS;
一切正常的话,将返回如下表格
+-------------------------+------------+---------------------+--------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------------+------------+---------------------+--------------------------------------------+
| mysql-bin.000001 | 1995 | video | mysql,test,information_schema |
+-------------------------+------------+---------------------+--------------------------------------------+
不要关闭mysql,下面配置slave