主从mysql启动以后,我们来做一些配置。假设3306为主,3307为从
登陆mysql命令和参数
/usr/local/mysql/bin/mysql
登陆不同的mysql参数,可以IP也可以是sock
mysql -S /tmp/mysql.sock sock登陆主
mysql -h127.0.0.1 -P3306 IP和端口登陆主
mysql -S /tmp/mysql2.sock sock登陆从
mysql -h127.0.0.1 -P3307 IP和端口登陆从
默认不加参数,为登陆/etc/my.cnf的mysql为主
测试:
1.登陆主,并创建数据库
/usr/local/mysql/bin/mysql
create database db1;
为了测试方便,复制一份mysql的库过来
mysqldump -S /tmp/mysql.sock mysql > 123.sql
mysql -S /tmp/mysql.sock db1 < 123.sql
拷贝一份库过来后,登陆mysql
use db1; 切换库
show tables; 查看库包含的文件
发现db1中多了许多文件
2.编辑主配置文集
vim /etc/my.cnf
打开server-id = 1 主和从ID不能一样
log-bin=mysql-bin =后面名称可自定义wyp
有时会在log-bin=mysql-bin下插入一行,来指定同步的库,如:
binlog-do-db=db1,db2,db3
或者是指定不去同步的库,其它的同步。黑名单性质。如:
binlog-ignore-db=db1
保存退出
重启mysql服务
/etc/init.d/mysqld restart
此时在/data/mysql/会生成几个以wyp开头的文件,这就是它的binlog。
mysql重启后,在做一些授权相关,用以同步操作。
登陆mysql
/usr/local/mysql/bin/mysql
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by 'hd792310';
创建并授权用户repl密码hd792310,专门用来传输binlog。只给与replication权限
flush privileges; 刷新一下权限
flush tables with read lock; 全局表的锁定,只能读.全局解锁unlock tables;
show master status; 读取一个binlog相关的数据,等会要用到。
3.编辑从配置文件
vim /usr/local/mysql2/my.cnf
修改server-id = 111 确保和主ID不同
有时也在下面追加一些其他功能,和主的指定同步文件类似。如:
replicate-do-db=db1,db2 或者 replicate-ignore-db=db1
重新启动mysql从服务,因为改变了配置文件
/etc/init.d/mysql2 restart
在从上也创建一个库db1
/usr/local/mysql2/bin/mysql -S /tmp/mysql2.sock -e "create database db1"
把123.sql也导入从库中
/usr/local/mysql/bin/mysql -S /tmp/mysql2.sock db1 < 123.sql
注:想实现主从的库同步,首先主从库要先一致。
接下来是关键的部分。首先登陆从mysql
/usr/local/mysql/bin/mysql -S /tmp/mysql2.sock
slave stop ; 先停掉,一会开启。
change master to master_host='127.0.0.1', master_port=3306, master_user='repl', master_password='hd792310', master_log_file='wyp.00001', master_log_pos=106;
指定主的host,端口默认3306,可以省略,用户、密码、上次在主上show master status;时查看的两个信息。
注意:如3306和106纯数字的不需要引号,否则报错。
最后一步
slave start; 启动从
此时我们可以看看从的库
show slave status\G;
看主从是否真正的成功,查看这两行是否有2个YES
Slave_IO_Running:YES
Slave_SQL_Running:YES