两台虚拟机192.168.183.131和192.168.183.132,装完系统之后直接把所有开发包都装上
下载软件包mysql-5.6.10.tar.gz,cmake-2.8.10.2.tar.gz(从5.5开始mysql使用cmake来进行编译了而不是之前的configure)
mysql的编译安装
1.首先安装cmake
[root@localhost~]#tar-xvfcmake-2.8.10.2.tar.gz[root@localhost~]#cdcmake-2.8.10.2[root@localhostcmake-2.8.10.2]#./configure[root@localhostcmake-2.8.10.2]#make;makeinstall
2.安装mysql
1)创建mysql用户和组
[root@localhost~]#groupaddmysql[root@localhost~]#useradd-gmysqlmysql[root@localhost~]#mkdir/usr/local/mysql[root@localhost~]#chown-Rmysql.mysql/usr/local/mysql
2)解压缩mysql,进行编译安装
[root@localhost~]#tar-xvfmysql-5.6.10.tar.gz[root@localhost~]#cdmysql-5.6.10[root@localhost~]#cmake\-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_DATADIR=/user/local/mysql/data\-DSYSCONFDIR=/etc\-DEXTRA_CHARSETS=all\-DDEFAULT_CHARSET=utf8\-DDEFAULT_COLLATION=utf8_general_ci\-DWITH_INNOBASE_STORAGE_ENGINE=1\-DWITH_ARCHIVE_STORAGE_ENGINE=1\-DWITH_BLACKHOLE_STORAGE_ENGINE=1\-DWITH_FEDERATED_STORAGE_ENGINE=1\-DWITH_PARTITION_STORAGE_ENGINE=1\-DWITH_PERFSCHEMA_STORAGE_ENGINE=1\-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock\-DMYSQL_TCP_PORT=3306\-DWITH_DEBUG=0\-DENABLED_LOCAL_INFILE=1[root@localhost~]#make;makeinstall[root@localhost~]#cd/usr/local/mysql/[root@localhostmysql]#chown-Rroot.mysql*[root@localhostmysql]#chown-Rmysql.mysqldata/
3)创建主配置文件和启动脚本
[root@localhostdata]#cp/usr/local/mysql/support-files/my-f/etc/f[root@localhost~]#vi/etc/fbasedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport=3306server_id=131socket=/var/run/mysqld/mysqld.sockuser=mysqllog-error=/var/log/mysqld.log[root@localhost~]#cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld[root@localhostdata]#vi/etc/init.d/mysqldbasedir=/usr/local/mysqldatadir=/usr/local/mysql/datamysqld_pid_file_path=/var/run/mysqld/mysqld.pid
4)把mysql的相关文件录入系统
配置mysql命令的搜索路径
打开/etc/profile文件找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC在这句之前添加export PATH=$PATH:/usr/local/mysql/bin 就会对所有用户有效并且开机自动生效了
告知系统mysql库文件的存放位置
编辑/etc/ld.so.conf.d/mysql.conf 添加/usr/local/mysql/lib
ldconfig -v |grep mysql
ldconfig会按照系统库文件的搜索路径把系统中所有的库文件重新加载一遍
告知系统mysql头文件的位置
ln -sv /usr/local/mysql/include /usr/include/mysql
配置mysql的man手册页
vi /etc/man.config添加 MANPATH=/usr/local/mysql/man
5)初始化数据库并且启动
[root@localhostscripts]#pwd/usr/local/mysql/scripts[root@localhostscripts]#mysql_install_db--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data--user=mysql[root@localhost~]#chkconfig--addmysqld[root@localhost~]#servicemysqldstart
6)配置第二台mysql,直接复制过去
[root@localhost~]#scp-r/etc/f192.168.183.132:/etc[root@localhost~]#scp-r/etc/init.d/mysqld192.168.183.132:/etc/init.d[root@localhost~]#scp-r/usr/local/mysql192.168.183.132:/usr/local[root@localhost~]#scp-r/etc/ld.so.conf.d/mysql.conf192.168.183.132:/etc/ld.so.conf.d/[root@localhost~]#groupaddmysql[root@localhost~]#useradd-gmysqlmysql[root@localhost~]#chown-Rmysql.mysql/usr/local/mysql[root@localhost~]#cd/usr/local/mysql[root@localhost~]#chown-Rroot.mysql*[root@localhost~]#chown-Rmysql.mysqldata/
在132上面把/etc/f配置文件中的server-id改成132,然后重复进行第四部
主从复制的配置
1.把131配置成主库,把132配置成从库
1)在131上面打开二进制日志
修改配置文件/etc/f,添加log-bin = mylog.000001
重启mysql
2)然后建一个用户,授权可以读取自己的二进制日志
mysql>grantreplicationslaveon*.*toslave@'192.168.183.132'identifiedby'mapabc';QueryOK,0rowsaffected(0.01sec)mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)
3)从库上面登录测试
[root@localhost~]#mysql-uslave-p-h192.168.183.131Enterpassword:Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||test|+--------------------+2rowsinset(0.00sec)
4)主库上面查看当前的POS号
mysql>showmasterstatus;+--------------+----------+--------------+------------------+-------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|+--------------+----------+--------------+------------------+-------------------+|mylog.000001|412||||+--------------+----------+--------------+------------------+-------------------+1rowinset(0.00sec)
5)在从库上面配置
mysql>CHANGEMASTERTO->MASTER_HOST='192.168.183.131',->MASTER_USER='slave',->MASTER_PASSWORD='mapabc',->MASTER_LOG_FILE='mysql.000001',->MASTER_LOG_POS=412;QueryOK,0rowsaffected,2warnings(0.08sec)
6)查看从库状态并启动从库
mysql>showslavestatus\G;***************************1.row***************************Slave_IO_State:Master_Host:192.168.183.131Master_User:slaveMaster_Port:3306Connect_Retry:60Master_Log_File:mysql.000001Read_Master_Log_Pos:412Relay_Log_File:mysqld-relay-bin.000001Relay_Log_Pos:4Relay_Master_Log_File:mysql.000001Slave_IO_Running:NoSlave_SQL_Running:Nomysql>startslave;mysql>showslavestatus\G;***************************1.row***************************Slave_IO_State:WaitingformastertosendeventMaster_Host:192.168.183.131Master_User:slaveMaster_Port:3306Connect_Retry:60Master_Log_File:mylog.000001Read_Master_Log_Pos:412Relay_Log_File:relay-bin.000002Relay_Log_Pos:279Relay_Master_Log_File:mylog.000001Slave_IO_Running:YesSlave_SQL_Running:Yes
7)测试
主库131创建数据库
mysql>createdatabasedb5;QueryOK,1rowaffected(0.00sec)mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||db5||mysql||performance_schema||test|+--------------------+5rowsinset(0.00sec)
从库上面查看
mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||db5||mysql||performance_schema||test|+--------------------+5rowsinset(0.01sec)
已经同步过来了。
把132配置成主库,把131配置成132的从库
1)对于主从复制来说,主库可以接受读写,从库只能读不能写,一旦从库有写入操作,造成主从库数据不一致,复制立马就断开了,我们就在131上面建立一个授权帐号让它同步到132上面
mysql>grantreplicationslaveon*.*toslave@'192.168.183.131'identifiedby'mapabc';QueryOK,0rowsaffected(0.00sec)
2)打开132的二进制日志,把132配置成主库,然后重启132的mysql
3)在131上面配置
mysql>CHANGEMASTERTO->MASTER_HOST='192.168.183.132',->MASTER_USER='slave',->MASTER_PASSWORD='mapabc',->MASTER_LOG_FILE='mylog.000001',->MASTER_LOG_POS=120;QueryOK,0rowsaffected,2warnings(0.12sec)mysql>startslave;QueryOK,0rowsaffected(0.01sec)
4)测试
在132上面创建数据库
mysql>createdatabasedb4;QueryOK,1rowaffected(0.01sec)
在131上面查看,看到已经同步过来了
mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||db4||db5||mysql||performance_schema||test|+--------------------+6rowsinset(0.00sec)
至此,主主同步配置完成。