安装、配置MySQL 参考之前步骤搭建MySQL服务 为了做实验方便,我们在同一台机器上配置两个MySQL服务(跑两个端口) cd /usr/local/; cp -r mysql mysql_2; cd mysql_2; 初始化mysql2: ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql2
拷贝配置文件:cp /etc/my.cnf ./my.cnf 修改配置文件相关参数:vim my.cnf #更改port 以及 socket 启动:/usr/local/mysql_2/bin/mysqld_safe --defaults-file=/usr/local/mysql_2/my.cnf --user=mysql & 若开机启动它,需加入到 /etc/rc.local中

  1. 配置主从准备工作 设定mysql_2 为主端口3307,mysql为从端口为3306 在主上创建测试库: create database db1; 然后导出主的mysql库数据然后导入给db1 mysqldump -uroot -S /tmp/mysql2.sock mysql > 123.sql ; mysql -uroot -S /tmp/mysql2.sock db1 < 123.sql

  2. 配置主(master) vim /usr/local/mysql_2/my.cnf #修改或添加: server-id=1 log-bin=mysql-bin
    两个可选参数(2选1): binlog-do-db=db1,db2 #需要同步的库 binlog-ignore-db=db1,db2 #忽略不同步的库 修改配置文件后,重启mysql_2 pid=ps uax |grep mysql2.sock |grep -v grep |awk '{print $2}' ; kill $pid; cd /usr/local/mysql_2/bin/; ./mysqld_safe --defaults-file=../my.cnf --user=mysql & 设置root密码:mysqladmin -u root -S /tmp/mysql2.sock password '123456' mysql -u root -S /tmp/mysql2.sock -p'123456' grant replication slave on . to 'repl'@'127.0.0.1' identified by '123123'; flush tables with read lock; show master status; #一定要记住前两列的内容,一会会用到

  3. 设置从(slave) vim /etc/my.cnf #修改或增加 server-id = 2 #这个数值不能和主一样 可选参数:replicate-do-db=db1,db2 和 replicate-ignore-db=db1,db2 #意义同主的那两个可选参数 service mysqld restart 拷贝主的db1库数据到从:mysqldump -uroot -S /tmp/mysql2.sock -p123456 db1 > db1.sql; mysql -uroot -p -e "create database db1"; mysql -uroot -p db1 < db1.sql mysql -uroot -p #登陆从的mysql slave stop; change master to master_host='127.0.0.1', master_port=3307, master_user='repl', master_password='123123', master_log_file='mysql-bin.000006', master_log_pos=474952; slave start; 主上: mysql -uroot -S /tmp/mysql2.sock -p123456 -e "unlock tables" 从上查看从的状态: show slave status\G;

  4. 测试主从 主上清空db1库的db表 :use db1; select count() from db"; truncate table db;
    进入slave,查看db1库db表: use db1; select count(
    ) from db";
    主上删除表db: drop table db; 从上看db表不存在了 建议: MySQL主从机制比较脆弱,谨慎操作。如果重启master,务必要先把slave停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master的mysql服务,否则很有可能就会中断了。当然重启完后,还需要把slave给开启 slave start.