Multiple relationships in a query

Unfortunately, meta queries do not support a combination of AND & OR. But what you can do, is make two queries, one for each rule, then combine the results.

$group_1 = get_posts(
    array(
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'meta_query'     => array (
            array (
                'key'   => 'field1',
                'value' => 'data1',
            ),
            array (
                'key'   => 'field2',
                'value' => 'data2',
            ),
        ),
    )
);

$group_2 = get_posts(
    array(
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'meta_query'     => array (
            array (
                'key'   => 'field1',
                'value' => 'data2',
            ),
            array (
                'key'   => 'field2',
                'value' => 'data1',
            ),
        ),
    )
);

$query = new WP_Query(
    array(
        'post__in' => array_merge( $group_1, $group_2 ),
    )
);