Você está na página 1de 14

Errata Sheet for MySQL High Availability

(D61920GC10)
Date Generated: 27-May-10

Lesson Page Details

This document should not be distributed.


03 8 Original
Lab 3-A, Step 1. Edit the configuration file to add the log-bin option under the
[mysqld] heading. Close and save the configuration file.

Revision
Details added:

For Instructor Use Only.


[mysqld]
log-bin=mysql-bin
binlog_format=mixed
03 8 Original
Lab 3-A, Step 2. Restart the MySQL server.

Revision
Details added:

shell> mysql restart


03 8 Original
Lab 3-A, Step 3. Locate the binary log files in the datadir.

Revision
Details added:

Locate the binary log files in the datadir (/usr/local/mysql/data)


03 8 Original
Lab 3-A, Step 4. Perform a data change operation on a table in your database.

Revision
Details added:

mysql> INSERT INTO City VALUES


-> (4990,'Kolkata','IND','Howrah',100000);

MySQL High Availability 1


03 8 Original
Lab 3-A, Step 5. Use mysqlbinlog to view the contents. Display the
command and some other information from your previous step.

Revision
Details added:

shell> mysqlbinlog mysql-bin.000001 > abcd.txt


shell> vi abcd.txt

This document should not be distributed.


03 8 Original
Lab 3-A, Step 8. View the contents of the binary log index file and verify it
matches the previous step. Displays a list of the two files that have been created.

Revision
Details added:

For Instructor Use Only.


shell> vi mysql-bin.index
03 8 Original
Lab 3-A, Step 9. Issue a PURGE MASTER LOGS command to delete the first
binary log

Revision
Details added:

mysql> PURGE MASTER LOGS to 'mysql-bin.000002';


03 8 Original
Lab 3-A, Step 10. Verify the log file has actually been deleted and view the
binary log index again.

Revision
Details added:

shell> vi mysql-bin.index
03 12 Original
Lab 3-B, Step 1. Setup the master using the following steps:

Turn on the binary log (for the master)


Set the server-id to be a unique number
Create a new user with the REPLICATION SLAVE privilege
Create a backup of the master that contains binary log coordinates

MySQL High Availability 2


Revision
Details added:

shell> /etc/init.d/mysql stop

shell> vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=123

This document should not be distributed.


binlog_format=mixed

shell> /etc/init.d/mysql start

mysql> GRANT REPLICATION SLAVE ON *.* TO


-> slave@slave_machine_ip_address IDENTIFIED

For Instructor Use Only.


-> BY sakila;

mysql> QUIT;

shell> mysqldump -uroot -p --add-drop-database


--lock-all-tables --master-data --databases world >
/tmp/dumpfile.sql
03 12 Original
Lab 3-B, Step 2. Setup the slave using the following steps:

Turn on the binary log (for the slave)


Set the server-id to be a unique number
Load in the backup from the master
Setup the binary log coordinates using the CHANGE MASTER TO
command
Tell the slave where the master resides using the CHANGE MASTER TO
command
Start replication with SLAVE START

Revision
Details added:

shell> /etc/init.d/mysql stop

shell> vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=200
binlog_format=mixed

MySQL High Availability 3


shell> /etc/init.d/mysql start

shell> scp
root@master_machine_ip_address:/tmp/dumpfile.sql /tmp

shell> mysql -uroot p

mysql> CHANGE MASTER TO MASTER_LOG_FILE=


-> 'mysql-bin.000006', MASTER_LOG_POS=250;

This document should not be distributed.


[Get the details for this command from the dump file above]

mysql> CHANGE MASTER TO MASTER_HOST=


-> master_ip_address, MASTER_USER=slave,
-> MASTER_PASSWORD=sakila;

For Instructor Use Only.


mysql> source /tmp/dumpfile.sql

shell> START SLAVE


03 12 Original
Lab 3-B, Step 3. Perform an INSERT on the master

Revision
Details added:

mysql> INSERT INTO City VALUES


-> (5000,'Bangalore','IND','Bangalore',100000);
03 12 Original
Lab 3-B, Step 4. Verify the row was received by the slave with a SELECT

Revision
Details added:

mysql> SELECT * FROM City WHERE Name=Bangalore;


03 17 Original
Lab 3-C, Step 4. Perform an INSERT on the master server again

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('MySQL_land','AUS');

MySQL High Availability 4


03 17 Original
Lab 3-C, Step 5. Verify the row is not added on the slave.

Revision
Details added:

mysql> SELECT * FROM City WHERE Name=MySQL_land;


03 17 Original
Lab 3-C, Step 13. Perform an INSERT on the master server again

This document should not be distributed.


Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('IO_land','USA');

For Instructor Use Only.


03 17 Original
Lab 3-C, Step 14. Verify the row is added on the slave.

Revision
Details added:

mysql> SELECT * FROM City WHERE Name=IO_land;


03 18 Original
Lab 3-C, Step 22. Create a table called break on the slave.

Revision
Details added:

mysql> CREATE TABLE break (ID INT NOT NULL


-> AUTO_INCREMENT PRIMARY KEY);
03 18 Original
Lab 3-C, Step 23. Create the same table on the master.

Revision
Details added:

mysql> CREATE TABLE break (ID INT NOT NULL


-> AUTO_INCREMENT PRIMARY KEY);

MySQL High Availability 5


03 18 Original
Lab 3-C, Step 36. Perform an INSERT on the master

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('Bin_land','CAN');

This document should not be distributed.


Verify that the new record was added to the slave also:

mysql> SELECT * FROM City WHERE Name=Bin_land;


03 19 Original
Lab 3-C, Step 39. As the root user, attempt to insert a row on the slave

For Instructor Use Only.


Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('Root_land','GBR');
03 19 Original
Lab 3-C, Step 39. As the root user, delete the row

Revision
Details added:

mysql> DELETE FROM world.City WHERE Name='Root_land';


03 19 Original
Lab 3-C, Step 41. As a non-super user, attempt to insert a row on the slave

Revision
Details added:

As root user logged into the slave server, create the following non-super user:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO


-> 'superuser'@'localhost' IDENTIFIED BY 'abcd'
-> WITH GRANT OPTION;

Attempt to insert the following record:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('Root_land','GBR');

MySQL High Availability 6


03 22 Original
Lab 3-D, Step 1. Setup the slave as a master to the original master following the
original instructions.

Revision
Details added:

ON THE CURRENT MASTER (WILL BE IDENTIFIED AS SYSTEM B)

This document should not be distributed.


mysql> GRANT REPLICATION SLAVE ON *.* TO
-> slave@slave_machine_ip_address IDENTIFIED
-> BY sakila;

mysql> QUIT;

For Instructor Use Only.


shell> mysqldump -uroot -p --add-drop-database
--lock-all-tables --master-data --databases
world > /tmp/dumpfile.sql

ON THE CURRENT SLAVE (WILL BE IDENTIFIED AS SYSTEM A)

shell> scp
root@master_machine_ip_address:/tmp/dumpfile.sql /tmp

shell> mysql uroot p

mysql> CHANGE MASTER TO MASTER_LOG_FILE=


-> 'mysql-bin.000006', MASTER_LOG_POS=250;
[Get this position from the dumpfile]

mysql> CHANGE MASTER TO


-> MASTER_HOST=master_ip_address,
-> MASTER_USER=slave, MASTER_PASSWORD=sakila;

mysql> START SLAVE;


03 22 Original
Lab 3-D, Step 2. Perform an INSERT on the first system, which we will call
system A

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('OU_land','IND');

MySQL High Availability 7


03 22 Original
Lab 3-D, Step 3. Perform an INSERT on the second system, which we will call
system B

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('Tin_land','CHN');

This document should not be distributed.


03 22 Original
Lab 3-D, Step 4. Verify both INSERTs were successful on both systems (A and
B)

Revision
Details added:

For Instructor Use Only.


Perform the following SQL statement on both systems:

mysql> SELECT * FROM City WHERE Name=OU_land OR


-> Name=Tin_land;
03 22 Original
Lab 3-D, Step 6. Insert a new row into City on system B.

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('BNG_land','BNG');
03 22 Original
Lab 3-D, Step 8. Perform an INSERT on system A with the LOCKd table

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('Col_land','SLK');
03 22 Original
Lab 3-D, Step 14. 14. Delete the newly added row on system A

Revision
Details added:

mysql> DELETE FROM world.City WHERE Name=Col_land;

MySQL High Availability 8


03 23 Original
Lab 3-D, Step 24. Insert a new row into City on system A.

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)


-> VALUES ('CHN_land','IND');
03 23 Original

This document should not be distributed.


Lab 3-D, Step 26. Perform an INSERT on the system B with the LOCKd table

Revision
Details added:

mysql> INSERT INTO world.City (Name, CountryCode)

For Instructor Use Only.


-> VALUES ('DEL_land','IND');
04 9 Original
Lab 4-B, Step 1. Create a new file named /var/lib/mysqlcluster/config.ini

Revision
In the Oracle University classrooms, it is crucial to remain a network connection
to the machines at all times. The original HA lab was unacceptable because it
asked the student to disconnect the system from the network. The following steps
are crucial to ensure that the students can simulate disconnecting the system from
the network.

1. Shut down the MySQL server.


shell> /etc/init.d/mysql stop

2. Create a virtual IP address that you will use during the labs in this course.
shell> /labs/start_virtual_ip.sh
3. View the details for the virtual IP that was created.
shell> ifconfig eth0:1

4. Write down the inet address for this virtual IP.

______________________________________________

5. Create a new file named /var/lib/mysqlcluster/config.ini.


shell> mkdir /var/lib/mysql-cluster
shell> vi /var/lib/mysql-cluster/config.ini

MySQL High Availability 9


04 9 Original
Lab 4-B, Step 3. Add the host name for the management server

Revision
hostname=192.168.2.1 (Replace IP with inet address obtained in step 1.4)
04 9 Original
Lab 4-B, Step 8. Add in a section for one data node

Revision

This document should not be distributed.


Add the hostname to the [NDBD] section also

[NDBD]
hostname=192.168.2.1 (Replace IP with inet address obtained in step 1.4)
04 9 Original

For Instructor Use Only.


Lab 4-B, Step 9. Add in a section for the second data node

Revision
Add the hostname to the [NDBD] section also

[NDBD]
hostname=192.168.2.1 (Replace IP with inet address obtained in step 1.4)
04 9 Original
Lab 4-B, Step 10. Add in a section for the MySQL server

Revision
Add the hostname to the [MYSQLD] section also

[MYSQLD]
hostname=192.168.2.1 (Replace IP with inet address obtained in step 1.4)
04 9 Original
Lab 4-B, Step 11. Verify you have defined everything properly

Revision
The config.ini file should look like the configuration below (replacing the IP with
the inet address obtained in step 1.4)

[NDB_MGMD]
hostname=192.168.2.1
datadir=/var/lib/mysql-cluster

[NDBD DEFAULT]
NoOfReplicas=2
datadir=/var/lib/mysql-cluster

MySQL High Availability 10


[NDBD]
hostname=192.168.2.1

[NDBD]
hostname=192.168.2.1

[MYSQLD]
hostname=192.168.2.1
04 20 Original

This document should not be distributed.


Lab 4-G, Step 1. Find a second machine, or find another student to work together
on this set of exercises

Revision
In this lab, two systems will be used to create a cluster. You will need to use the
virtual IP addresses for each of the systems used. It is important to use the eth0:1

For Instructor Use Only.


IP addresses.

View the details for the virtual IP that was created.

shell> ifconfig eth0:1

Write down the inet address for this virtual IP.

______________________________________________

04 20 Original
Lab 4-G, Step 2b. Create the new config.ini defining the cluster on the system
with the management server

Revision
Choose which machine will be the Cluster Management Server and label this
machine server A. On server A, edit the /var/lib/mysql-cluster/config.ini file
to contain the following text:

[NDB_MGMD]
hostname=192.168.2.1 (Server A Virtual IP Address)
datadir=/var/lib/mysql-cluster

[NDBD DEFAULT]
NoOfReplicas=2
datadir=/var/lib/mysql-cluster

[NDBD]
hostname=192.168.2.1 (Server A Virtual IP Address)

MySQL High Availability 11


[NDBD]
hostname=190.145.45.15 (Server B Virtual IP Address)

[MYSQLD]
hostname=192.168.2.1 (Server A Virtual IP Address)

[MYSQLD]
hostname=190.145.45.15 (Server B Virtual IP Address)
04 20 Original

This document should not be distributed.


Lab 4-G, Step 2c. Edit the /etc/my.cnf files to both point to the management
server.

Revision
On server A, edit the /etc/my.cnf file to include the following:

For Instructor Use Only.


[mysqld]
ndbcluster
ndb-connectstring=192.168.2.1 (Server A Virtual IP Address)

[ndbd]
connect-string=192.168.2.1 (Server A Virtual IP Address)

[ndb_mgm]
connect-string=192.168.2.1 (Server A Virtual IP Address)

[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini

On server B, edit the /etc/my.cnf file to include the following:

[mysqld]
ndbcluster
ndb-connectstring=192.168.2.1 (Server A Virtual IP Address)
04 21 Original
Lab 4-G, Step 12. Restart the cluster, verify it is restarted and the data is still
present. Disable the network (either pull the network cable, or use ifconfig eth0
down) on the non-management server machine.

Revision
On server B, disable the network by issuing the following command ONLY:

shell> ifdown eth0:1

MySQL High Availability 12


04 21 Original
Lab 4-G, Step 14. Re-enable the network, does the node automatically rejoin?

Revision
On server B, Re-enable the network by issuing the following command.

shell> ifup eth0:1


04 21 Original
Lab 4-G, Step 19. Disable the network (either pull the network cable, or use

This document should not be distributed.


ifconfig eth0 down) on the non-management server machine.

Revision
On server B, disable the network by issuing the following command ONLY:

shell> ifdown eth0:1

For Instructor Use Only.


04 21 Original
Lab 4-G, Step 20. Re-enable the network, does the node automatically rejoin?

Revision
On server B, Re-enable the network by issuing the following command.

shell> ifup eth0:1


04 21 Original
Lab 4-G ended with a question to the student

Revision
At the completion of this lab perform the following steps.
1. In the MySQL client, issue the following commands:
mysql> DROP DATABASE world;
mysql> CREATE DATABASE world;
mysql> USE world;
mysql> SOURCE /labs/world.sql

2. In the NDB management client (ndb_mgm), issue the following


commands:
ndb_mgm> SHUTDOWN
ndb_mgm> EXIT

MySQL High Availability 13


06 14 Original
Lab 6-B, step 3. Edit the ha.cf file and perform the following actions

Revision
The line which states, uncomment bcast eth0, should use eth0:1 instead of eth0.
Make the change in the ha.cf file to reflect this.
06 15 Original
Lab 6-B, step 4. Edit the haresources file and perform the following action. Add a
line:

This document should not be distributed.


hostname1 virtual_ip_address

Revision
The virtual_ip_address should be the IP address associated with eth0:1.

For Instructor Use Only.


06 15 Original
Lab 6-B, Step 10. On the first host machine (hostname1), turn off network
connection by issuing the following command:

Revision
On the first host machine (hostname1), turn off network connection by issuing the
following command ONLY:

shell> ifdown eth0:1


06 16 Original
Lab 4-G, Step 13. On the first host machine (hostname1), turn on the network
connection by issuing the following command:

Revision
On the first host machine (hostname1), turn on the network connection by issuing
the following command:

shell> ifup eth0:1

MySQL High Availability 14

Você também pode gostar